先感謝403F的幫助
要爬的是https://soutubot.moe/
然後就遇到了問題
貫穿始終的是401未授權訪問,但是請求包裏不包含token一類的,cookie也放了,將整個導入到postman裏面
發現能夠請求成功,然後只有請求頭可能出問題,那就是請求頭的問題
請求頭一個一個去掉直到不能訪問,比較重要的一項是x-api-key,網站用了自己自定義的生成的x-api-key,保證安全性,x-api-key看起來是隨機生成的base64,然後過期時間特別短,看看,即使你放置了x-api-key在請求頭裏,也會很快過期
然後
在URL contains 裏面過濾包含search請求的
斷點卡到search這一步
跳步運行幾步
運行完e.apply後這個函數運行結束,所以我們試試在這個函數剛開始的時候設置斷點
我們嘗試在這個函數最上方設置斷點
發現了我們要找的x-api-key,在這裏已經被賦值
接下來的
方法一
“從下往上逆着找調用鏈”,找到誰調用的這個函數
找到callback調用鏈,主要要找到哪裏調用了這個,找到了Oi
往上追,M也被賦值了
右面有明顯特徵的就是search了,在search裏面找個斷點
步入,發現進入os
之後會進入這裏,發現M即是上文的e,這時候還沒有賦值
再步入直接賦上值了,基本鎖定了RC是賦值函數
有個看起來很不錯的字符串
單步運行到有個看起來很不錯的字符串
花絮
V0MxaFVHa3RTMFY1
很酷
然後就是X-api-KEy了
看看怎麼實現
const RC = ()=>{
Q.tz.setDefault("Asia/Shanghai");
const e = (Math.pow(Q().unix(), 2) + Math.pow(window.navigator.userAgent.length, 2)).toString();
return En.encode(e).split("").reverse().join("").replace(/=/g, "")
}
當前時間平方,+userAgent長度平方求base64,base64取反去掉等號,生成出來的x-api-key
因此爬蟲只需要現算然後求值就可以了,
封裝了一個api在github上
方法二:
“從上到下”,找到調用該函數之前的一個函數,單步調試直到調用該函數
找看起來可能有意義的函數
往下調用到RC,然後和後面一樣了