應用環境
python3.6+pycharm+windows7+requests
過程分析
1. 查看登錄需要的參數
對比分析得知 : token:令牌 要獲取 tt:時間戳 gid:也要獲取 username: 用戶名 password : 加密后的密碼 rsakey: 密鑰 verifycode :驗證碼 callback :隨機的值 fp_uid ,fp_info , ppui_logintime都可以用第一次提交時的參數可以固定
2.參數獲取
?token:
搜索token即可
????可以看出是返回值
tokenUrl ='https://passport.baidu.com/v2/api/?getapi&tpl=mn&apiver=v3&tt={}&class=login&gid={}&loginversion=v4&logintype=dialogLogin&traceid=&callback={}'.format(時間戳,gid,callback)
現在要獲取gid和callback
gid:
會出來好幾個js都下載到本地 然后再進行搜索
js中搜索到的再搜索guideRandom
可以看出是把xxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 替換出來的
python方法
callback:
? ? callback和gid 是同一個js文件
再搜索 getUniqueId
pytho模擬一下
????python方法:
python方法
獲取token:
? ? 已經有了 callback 和gid ?去請求 token
正則匹配出來即可
密碼加密:
? ? 在第一步可以發現密碼是加密后的 大多數都是用的rsa 加密
? ? 那么要先獲取pubkey,直接搜索
找到url
匹配出 pubkey,rsakey
密碼加密
獲取驗證碼
? ? 獲取驗證碼要先獲取?vcodetype ?這個值應該是決定驗證碼的類型 中英文
返回值:
找出 vcodetype 和 codeString
利用 codeString ?去請求驗證碼 保存到本地 識別后輸入驗證碼
識別驗證碼
登錄:
不同返回值的意義: