↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能
后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包
本次爬蟲(chóng)來(lái)源于猿人學(xué)題目,題目是介樣的:http://match.yuanrenxue.com/match/2
這個(gè)cookie一看就有問(wèn)題哈,查看了一會(huì)兒再點(diǎn)第2頁(yè),漂亮,提示cookie失效,很明顯嘛,這就是個(gè)cookie反爬。第一頁(yè)的話已經(jīng)可以看到我們需要的就是這個(gè)m的值,第二頁(yè)的cookie已經(jīng)略顯不同。設(shè)置cookie的話簡(jiǎn)單說(shuō)一下,你去訪問(wèn)一個(gè)網(wǎng)站,先去A接口設(shè)置了cookie然后又去了B接口進(jìn)行驗(yàn)證,獲取數(shù)據(jù)。首先我們需要去訪問(wèn)A接口去設(shè)置cookie:import?requests
res?=?requests.get('http://match.yuanrenxue.com/match/2')
print(res.text)
然后呢,就拿到了這么一串東西,那必然就是設(shè)置cookie的js,也就是說(shuō)我們?cè)谶@個(gè)里面設(shè)置了cookie,再去請(qǐng)求就可以了。看到這么多,不要慌,一看就是ob混淆,在這個(gè)題目網(wǎng)站的上方有個(gè)分析工具,或者自己去下載個(gè)ob混淆一鍵還原也可以哈,然后找到下面ob混淆解析,把這串代碼的js標(biāo)簽去掉,復(fù)制進(jìn)去,點(diǎn)擊一鍵解混淆:再把下面的復(fù)制到webstorm中進(jìn)行調(diào)試,關(guān)于webstorm激活可以看上一篇:這樣就看起來(lái)很愉快了,也就是200來(lái)行的樣子,而且一眼就看到cookie。那就直接來(lái)看這個(gè)cookie吧,我們需要的是m的值,其他不需要的干掉:然后來(lái)看_0x39ba95這個(gè)函數(shù),根據(jù)前面看到的m的值,這可能是個(gè)時(shí)間戳。看下在哪里調(diào)用:就是個(gè)時(shí)間戳,接下來(lái)看_0x9c88d5這個(gè)函數(shù),其實(shí)也就是_0x3c2401這個(gè)函數(shù):第一段的話有興趣的可以去追一下,最簡(jiǎn)單的判斷哈,return的東西第一個(gè)沒(méi)啥用,第二個(gè)后面沒(méi)有地方調(diào)用的那就應(yīng)該沒(méi)啥用了,有用的話再扣回來(lái)就行了。這兩行不能干掉的哈,對(duì)try那段感興趣的可以把這兩行干掉去看看哈:如果global怎么怎么樣,然后怎么怎么樣,否則怎么怎么樣。然后我們就來(lái)看_0x9bdac4這里,可以控制臺(tái)輸出下,也可以根據(jù)剛才m那里的符號(hào)去判斷下:return?navigator["vendorSub"];?=?return?'?';
這里是個(gè)定時(shí)器,直接干掉,然后代碼就成了這樣:灰常的干凈,這樣就可以直接運(yùn)行跑起來(lái)了:現(xiàn)在只是輸出了值,還需要整合下代碼,合并下,搞下縮進(jìn),添加個(gè)調(diào)用cookie值的函數(shù),然后傳給py程序就行了。開(kāi)頭的那段一刪,整體往回縮進(jìn),多余的符號(hào)刪除。最后的console.log()改為:function?getcookie()?{
????return?_0x58af7c(_0x1805c7())
}
console.log(getcookie());
?

掃碼加我微信備注「三劍客」送你上圖三本Python入門(mén)電子書(shū)