今日校园自动签到

时间:2024-02-21 17:56:21

继上次的模拟校园门户登录之后,发现主要在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。
image
开启抓包后,进入打卡应用页面抓取网络请求,对报文进行逐步分析,通过筛查可以确定出打卡任务查询的api,接口uri也是便于理解。
image
总览处可以看到请求方法接口url以及相关状态,在确定接口内容时可以切换到响应页分析响应页的数据,来确定接口的作用,
image
根据接口返回数据分析,可以得出接口返回的签到任务信息。因此可以采用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酱来及时告知打卡状态,在打卡环节中通过消息将打卡结果推送到微信,这样便可以确保不漏签了。

完成以上这些,就可以持续霸榜校园了,不过打卡
image
还有一些注意事项后续再补充吧。