序
繼上次的模擬校園門戶登錄之后,發現主要在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醬來及時告知打卡狀態,在打卡環節中通過消息將打卡結果推送到微信,這樣便可以確保不漏簽了。
終
完成以上這些,就可以持續霸榜校園了,不過打卡

還有一些注意事項后續再補充吧。
