現在每天要進行健康情況上報,但是因為經常睡過頭忘記打卡,於是想著寫乙個程式來自動打卡。
訪問健康情況上報頁面(後會先跳轉到登入介面
輸入賬號密碼登陸以後會傳送乙個post請求
表單裡一共有五項內容
可以看到,username就是學號,password不是密碼的明文,可能是經過了雜湊或者加密,authcode一項為空不用管,_eventid應該是提交的意思,而最長的execution看不出有什麼含義。
通過檢視網頁源**,可以看到登入表單中有一項
就是execution的內容,可以看出,每次請求頁面的時候會返回execution,在登入時帶著這一項提交,作用可能是防止csrf攻擊(猜的)。
現在整個登入的流程已經梳理清楚了,開始使用**實現
先訪問頁面並提取execution
sess = requests.session()
r = sess.get('')
execution = re.search('name="execution" value="(.*?)"', r.text).group(1)
獲取密碼加密需要的引數
r = sess.get('')
modulus = r.json()['modulus']
exponent = r.json()['exponent']
加密密碼
ctx = execjs.compile(jscode)
encrypted_password = ctx.call('encrypt', username, password)
傳送登入請求
data =
r = sess.post(post_url, data=data)
之後就可以進行自動打卡的操作了。 Python 記錄 模擬登入 的 cookie
在 進行python進行爬蟲的時候,都繞不開登入,很多需求只能使用者登入之後才能進行後續的介面呼叫。那麼伺服器如何知道 你此次的請求 是否登入過 還是沒有,一般會通過cookie。因此記錄 cookie的作用就非常重要。usr bin env python import os import requ...
python 使用記錄
時間戳轉換為日期格式 deftimestamp datetime value,format value為傳入的值為時間戳 整形 如 1332888820 value time.localtime value 經過localtime轉換後變成 time.struct time tm year 2012...
Python 使用記錄(累計記錄)
2 pandas 設定 3 pandas 操作 4 笛卡爾積 1 列表轉字串list1 department of biology str1 join list1 print str1 department of biology2 從列表中刪除元素 要刪除的元素的型別必須與列表中的元素的型別相同 l...