今日校园自动签到
序
继上次的模拟校园门户登录之后,发现主要在header中存在ua判断字段"sec-ch-ua-mobile":"?1"
,在没设定此字段时获取到登录的cookie是没办法进行打卡操作的。因此在请求基础headers中带上参数"sec-ch-ua-mobile":"?1"
,便可以实现打卡操作了。
代码如下:
session.headers = {
"User-Agent":'''Mozilla/5.0 (Linux; Android 11; M2012K11AC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/90.0.4430.210 Mobile Safari/537.36 cpdaily/9.0.0 wisedu/9.0.0''',
"sec-ch-ua-mobile":"?1"
}
此时再采用上篇文章提到的模拟ASE加密方式登录,便可以进行打卡了,登录模块的业务不再赘述,可以参考上篇博客,下面讲一下如何提交打卡请求。
始
首先,完成登录操作后,需要获取打卡请求的接口以及接口所需参数,这里用到黄鸟来针对app进行抓包,通过分析网络请求来获取请求接口及相关参数,iso可以使用网球或者Thor。
开启抓包后,进入打卡应用页面抓取网络请求,对报文进行逐步分析,通过筛查可以确定出打卡任务查询的api,接口uri也是便于理解。
总览处可以看到请求方法接口url以及相关状态,在确定接口内容时可以切换到响应页分析响应页的数据,来确定接口的作用,
根据接口返回数据分析,可以得出接口返回的签到任务信息。因此可以采用python向接口发请求来获取签到信息,切换到请求页来分析接口入参需要哪些数据,此接口入参没有带数据此处就不给出截图。同理采用同样方法,也可以获取到签到任务的url,这里直接给出任务的相关接口及入参
#打卡接口
#请求方式 POST
url = "https://***.campusphere.net/wec-counselor-sign-apps/stu/sign/submitSign"
#递交参数json
data = json.dumps({
"abnormalReason": "",
"position": "江苏省南京市江宁区行知大道",
"longitude": 118.91106677453745,
"isNeedExtra": 1,
"latitude": 31.899435298851706, #经纬度
"isMalposition":0,
"signVersion": "1.0.0",
"extraFieldItems": [
{
"extraFieldItemWid": 715253,
"extraFieldItemValue": "36.3" #体温信息
}
],
"signPhotoUrl": "",
"uaIsCpadaily":"true",
"signInstanceWid": sWid #此参数需要通过签到任务获取
})
#查询签到任务
#unSignedTasks 中获取字段 singnInstanceWid
#
url2 = "https://***.campusphere.net/wec-counselor-sign-apps/stu/sign/getStuSignInfosInOneDay"
此处准备工作就基本完成
承
都是一些基础操作,这里就不给出代码了。为了保证不漏卡,需要引入辅助道具,首先阿里的函数计算可以通过cron表达式来准点触发,这样就可完全解放双手,其次为了保证每天都打卡了,利用server酱来及时告知打卡状态,在打卡环节中通过消息将打卡结果推送到微信,这样便可以确保不漏签了。
终
完成以上这些,就可以持续霸榜校园了,不过打卡
还有一些注意事项后续再补充吧。