使用Python爬蟲登錄系統(tǒng)之后,能夠?qū)崿F(xiàn)的操作就多了很多,下面大致介紹下如何使用Python模擬登錄。
我們都知道,在前端的加密驗證,只要把將加密環(huán)境還原出來,便能夠很輕易地登錄。
首先分析登錄的步驟,通過審查元素得知
1
|
< input type = "button" id = "login" name = "login" class = "login" onclick = "Logon();" value = "登錄" > |
點擊按鈕觸發(fā)Logon()函數(shù),然后查找Logon()函數(shù)定義
1
2
|
function Logon() { } |
函數(shù)定義內(nèi)容各有不同,一般里面包含一些加密的操作,一般是使用寫好的js加密。我們所需要做的便是重復(fù)這些步驟,加密數(shù)據(jù)。
對于加密,有三種方法:
- 如果加密方法是base64之類的,可以直接用Python3的base64庫加密;
- 手動模仿;
- 直接調(diào)用js加密,需要先下載PyExecJS,有的電腦需要先安裝js的運行環(huán)境,比如Node.js。使用方法如下:
1
|
newusername = execjs.compile(content).call( 'base64encode' , username) |
其中content是js內(nèi)容,base64encode是方法,username是參數(shù),newusername是加密后的數(shù)據(jù)。
對于驗證碼的問題,先介紹下一般的圖片驗證碼,可以請求獲取驗證碼的地址,session之類的數(shù)據(jù)自己搞定,一般便可以請求成功,可以存到本地手動輸入,也可以使用識別的第三方模塊,但這個識別效果并不是很好。
然后,便是查看session,cookie。
接下來的操作就是構(gòu)造請求頭headers,這個可以自行去控制臺查看或者使用wireshark, fiddler之類的抓包軟件查看。
最后便可以請求數(shù)據(jù):
使用
1
2
3
|
s = requests.Session() s.headers.update(headers) r = s.post(url, data = params) |
或者:
1
|
r = requests.get(url, headers = headers, data = params) |
headers是你構(gòu)造的請求頭,url是你請求的網(wǎng)站,params是加密的數(shù)據(jù)。
原文鏈接:https://www.cnblogs.com/FZfangzheng/p/7581537.html