記一次爬蟲

先感謝403F的幫助

要爬的是https://soutubot.moe/

然後就遇到了問題

貫穿始終的是401未授權訪問,但是請求包裏不包含token一類的,cookie也放了,將整個導入到postman裏面
image
發現能夠請求成功,然後只有請求頭可能出問題,那就是請求頭的問題

請求頭一個一個去掉直到不能訪問,比較重要的一項是x-api-key,網站用了自己自定義的生成的x-api-key,保證安全性,x-api-key看起來是隨機生成的base64,然後過期時間特別短,看看,即使你放置了x-api-key在請求頭裏,也會很快過期

然後
image
在URL contains 裏面過濾包含search請求的

斷點卡到search這一步
image

跳步運行幾步

運行完e.apply後這個函數運行結束,所以我們試試在這個函數剛開始的時候設置斷點
image

我們嘗試在這個函數最上方設置斷點

image

發現了我們要找的x-api-key,在這裏已經被賦值

image

接下來的

方法一

“從下往上逆着找調用鏈”,找到誰調用的這個函數

找到callback調用鏈,主要要找到哪裏調用了這個,找到了Oi

image

往上追,M也被賦值了

image

右面有明顯特徵的就是search了,在search裏面找個斷點

image

步入,發現進入os
image

之後會進入這裏,發現M即是上文的e,這時候還沒有賦值
image

再步入直接賦上值了,基本鎖定了RC是賦值函數
image

image

有個看起來很不錯的字符串
單步運行到有個看起來很不錯的字符串

image

花絮

V0MxaFVHa3RTMFY1
很酷

image

image

然後就是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上

方法二:

“從上到下”,找到調用該函數之前的一個函數,單步調試直到調用該函數

找看起來可能有意義的函數

image

往下調用到RC,然後和後面一樣了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章