python模拟登录吃鸡_Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!...
前言
這篇文章因為涉及到JS解密部分,所以難度比較高,Python基礎比較薄弱的同學可以來看看思路。
開始
進入到該網站后我們可以看到如下界面,今天要做的內容就是模擬登陸
那么咱們首先抓到登陸的包看看:
登陸的同時總共發送了兩次post請求,在登陸前發送了一次,其中需要攜帶的參數為用戶名,還有一個donotcache不難猜測出是一個時間戳,但是光靠猜不行,要拿出實際證明。
返回值:
success: true
publickey_mod: XXX
publickey_exp: '010001'
timestamp: '540205950000'
token_gid: '1c51cb6b00061f39'
這些值我們并不知道是用來做什么的,然后我們可以繼續看下登陸的包:
很明顯,第一眼就可以發現很多問題,cookie與第一次請求必須保持一致,然后第一次請求的返回值timestamp其實就是為了給第二次登陸的包傳參,rsatimestamp=timestamp,然后就是這個也有一個類似時間戳的東西donotcache,最關鍵的就是這個password是加密的!
咱們先解決donotcache是怎么產生的:
沒猜錯,new Date().getTime()本來就是JS取時間戳的語法,這個咱們用Python編程里的time模塊模擬就可了。
最關鍵的就是password加密的方式了:
這就有意思了var password = form.elements['password'].value;
password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
var encryptedPassword = RSA.encrypt(password, pubKey);
密碼經過了兩次改動,第一次是替換掉字符串,第二次是RSA加密,而這個加密需要用的pubKey,而var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
所以說我們還需要知道publickey_mod和publickey_exp,這個時候你再好好回想一下,咱們的第一次請求是不是返回值里正好有一個Mod和EXP?
總結
以上是生活随笔為你收集整理的python模拟登录吃鸡_Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++数据的一些注意事项
- 下一篇: opencv机器学习线性回归_Pytho