前言:当代大学生每天必须做的一件事我想会有健康打卡吧,有时候忘记打卡还会被@来@去,于我而言,每天都是在学校,位置并没有变,自动打卡可以完全交给程序去完成啦~以下程序是在贵州师范大学实现,如果是其他学校,方法也差不多噢,接定制~
注意:本脚本仅供学习交流,请勿用于非法操作,建议在下载24小时后删除,由此脚本发生的问题均与本站无关。
本站提供实现原理步骤以及配合腾讯云云函数实现自动签到.
抓包
打卡无非就是向服务器提交某些信息和数据,只要捕获到所需的参数,使用编程模拟向服务器发送数据就可以实现成功打卡。
所以第一步就是抓包。因为打卡是在微信里面打,为了方便,我这里使用的是手机抓包工具 点我下载抓包精灵,按照教程配置好后点击开始,右上角选择抓取微信的,接着打开微信到打卡界面如下
点击打卡后回到抓包软件。搜索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;
}
?>
如果你有服务器或虚拟空间只需要将代码上传并添加计划任务即可.
腾讯云云函数
以下是使用腾讯云云函数实现。
打开腾讯云腾讯云,
在搜索框搜索云函数,点击新建,选择从头开始,事件函数,运行环境选择php5.6,将上面的代码复制进去,并且把你自己的token填进去 触发方式选择定时触发,触发周期选择自定义,填入0 0 9,14,16 表示在每天上午9点,下午2点,4点触发.然后完成就可以啦~
如果你也懂,就自己写推送吧~我懒 这是我的机器人推送,每天签到完毕会在群里提醒我
版权属于:龙辉博客
本文链接:https://blog.eirds.cn/361.html
如果没有特别声明则为本博原创。转载时须注明出处及本声明!
21 comments
程序为偷懒而生
科技进步离不开偷懒 的推动
可以用auto.js写一个脚本吗
直接云端签到不好吗..
学校用的是网页,但是又验证码,咋办
可以发给我看看
https://e.kmmu.edu.cn/lyuapServer/login?service=http://fxdl.kmmu.edu.cn/wengine-auth/login?cas_login=true
只需要cookie就行了 但是我不知道你们学校的登录多久失效一次
学校用的是网页,但是又验证码,咋办
哪个学校的,具体情况具体分析了
不知道你这个是啥..
你这个最好做..
能否帮个忙做一个教程,我学习下,学的电气,只学过C语言还没学好。哈哈哈
大佬如果我要加cookie 是不是加在xcurl的那个空白处啊
不是噢 上面有注释,在开头的$token处
我学校把健康打卡系统的登录后台关了,只能通过主站进去,我想到了cookie结果只有几个小时的有效期
可以通过模拟登录,不过需要分析js,对于非技术还是有些难度