stemadb反扒機制分析

steamdb爬取時,需要驗證cookie,分析可知cookie有效時間爲一天

接下來開始正文,分析cookie如何獲取。

一. 網站訪問需求

經嘗試得知,網站主要驗證cookie中的 __cfduid 與 cf_clearance

只有倆同時有,網站才能正常訪問。

二. 分析網站邏輯

2.1 接下來分析,__cfduid 與 cf_clearance 是如何得到的

可以看出,在訪問網站時,進行了倆次訪問。第一次訪問時,返回了503,在第二次訪問時,返回了200。

第一次訪問時,不帶cookie, 進行get, 返回了503 ,以及 cookie中的__cfduid值。

第二次訪問時,爲post, 分析可以看出,cf_clearance值就是在這次請求中返回的。只要解決掉這次post就可以得到cf_clearance。

2.2 分析第二次post的網址以及參數是如何得到的。

這次post,需要知道的有:

1.請求字符串,就是網址後面的一串,經嘗試,每次請求都是不同的。

2. 表單數據 r、jschl_vc、pass、jschl_answer

既然每次請求均不同,且我們只訪問了倆次網址,那麼,這些參數必然是第一次get時返回的信息中獲取的。

2.3 分析第一次get返回的信息

嘗試分析,第一次get返回的數據,在form表單中,我們可以很明顯的獲取 請求字符串,r、jschl_vc、pass 的值,但是jschl_answer 並沒有值,繼續分析返回的數據,

在網站的js中,我們可以發現這麼一行,a = document.getElementById('jschl-answer'); 從頁面中獲取jschl-answer元素。

在後續的js中,還可以發現 a.value = (+JAdEwio.gi).toFixed(10); '; 121;

得出,jschl-answer 的值是經過js計算得出的。

這樣,我們就得到了第二階段 post的地址,以及參數

2.4 進行第二次請求,獲取cf_clearance

進行第二次請求,網站返回 cf_clearance 值,至此,通過攜帶cf_clearance與__cfduid,我們便可以任意的訪問steamdb網站,獲取我們需要的信息。

### 需要注意 如果是第一次訪問,__cfduid在第一次和第二次直接會進行一次改變,記得更新。###

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