前言:当代大学生每天必须做的一件事我想会有健康打卡吧,有时候忘记打卡还会被@来@去,于我而言,每天都是在学校,位置并没有变,自动打卡可以完全交给程序去完成啦~以下程序是在贵州师范大学实现,如果是其他学校,方法也差不多噢,接定制~


注意:本脚本仅供学习交流,请勿用于非法操作,建议在下载24小时后删除,由此脚本发生的问题均与本站无关。

本站提供实现原理步骤以及配合腾讯云云函数实现自动签到.

抓包

打卡无非就是向服务器提交某些信息和数据,只要捕获到所需的参数,使用编程模拟向服务器发送数据就可以实现成功打卡。
所以第一步就是抓包。因为打卡是在微信里面打,为了方便,我这里使用的是手机抓包工具 点我下载抓包精灵,按照教程配置好后点击开始,右上角选择抓取微信的,接着打开微信到打卡界面如下打卡
点击打卡后回到抓包软件。搜索daka搜索,找到这一条daka可以看到是向http://daka.wecampus.gznu.edu.cn:80/server/api/baseRecord/add?jwtToken=这里是你的token 提交的post JSON数据,接下来只需要自己用编程语言提交以下数据就可以了。这里我使用比较擅长的PHP.

代码实现

 <?php
    //author 龙辉
   // qq:1790716272
    header("Content-type: text/html; charset=utf-8");
    date_default_timezone_set("PRC");
    $token = '这里替换你的token';//这里填写token=后面的值
    $postdata='{
        "healthStatus":"健康",
        "suspectedDate":null,
        "patientDate":null,
        "isHot":false,
        "temperature":37,
        "isInHospital":"否",
        "hospital":null,
        "isolated":false,
        "isolatedMode":null,
        "isolatedAddress":null,
        "isolatedReason":null,
        "isolatedStartDate":null,
        "isolatedEndDate":null,
        "locationLatitude":"26.38743",
        "locationLongitude":"106.63461",
        "isOut":false,
        "locationCountry":"国内",
        "locationProvince":"贵州省",
        "locationCity":"贵阳市",
        "locationArea":"花溪区",
        "locationDetail":"二号路",
        "hasTravel":false,
        "travelReason":null,
        "travelFromDate":null,
        "travelFromPlace":null,
        "travelArrivalDate":null,
        "travelArrivalPlace":null,
        "travelMode":null,
        "travelComment":null,
        "hasTouchPatient":false,
        "hasOutHistory":false,
        "hasChumHot":false,
        "hasGoHighRiskArea":false,
        "hasTouchPersonFromHighRiskArea":false,
        "notes":"",
        "locationDescription":"贵州省贵阳市花溪区二号路"
    }';
    $result = xCurl('http://daka.wecampus.gznu.edu.cn:80/server/api/baseRecord/add?jwtToken='.$token,'',$postdata);
    if(json_decode($result,true)['success']==true)
    {
        echo '今日健康打卡成功'."\n".'当前时间:'.date('Y-m-d H:i:s', time());
        
    }
    else {
      echo '今日打卡失败,请检查';
    }
    
    function xCurl($url,$cookie=null,$postdata=null,$header=array()){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$url);
            if (!is_null($postdata)) curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);
            if (!is_null($cookie)) curl_setopt($ch, CURLOPT_COOKIE,$cookie);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json; charset=utf-8',
                'Content-Length:'.strlen($postdata)
            )
     );
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_ENCODING, "gzip");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 2);
            $re = curl_exec($ch);
            curl_close($ch);
            return $re;
        }
    ?>

如果你有服务器或虚拟空间只需要将代码上传并添加计划任务即可.

腾讯云云函数

以下是使用腾讯云云函数实现。
打开腾讯云腾讯云

在搜索框搜索云函数)1THSGSE{82OB7V%O[MA1@M.png,点击新建,选择从头开始,事件函数,运行环境选择php5.6,将上面的代码复制进去,并且把你自己的token填进去D$W8LD)RDZ3RGXB$8O%@KS0.png![][7] 触发方式选择定时触发,触发周期选择自定义,填入0 0 9,14,16 表示在每天上午9点,下午2点,4点触发.然后完成就可以啦~

如果你也懂,就自己写推送吧~我懒 这是我的机器人推送,每天签到完毕会在群里提醒我机器人

Last modification:May 29, 2022
If you think my article is useful to you, please feel free to appreciate