小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

爬蟲中Cookie的偽造(非登錄)

 Levy_X 2017-12-02

兩篇文章下肚,各位看官感覺如何。避免新同學(xué)不知道之前的文章:

爬蟲被封IP了怎么辦-反爬與反反爬的奇技淫巧

爬蟲中的驗(yàn)證碼識(shí)別-反爬與反反爬的奇技淫巧

前兩篇文章算是講了最常規(guī)的兩種反爬,本篇文章理論上應(yīng)該說說登錄,因?yàn)榛旧线@三個(gè)反爬套路結(jié)束之后,其他都是小眾了。不過登錄這個(gè)東西真的沒太多可講的,因?yàn)閲?yán)格來說登錄并不是反爬,只是一種保護(hù)手段,后面有時(shí)間簡(jiǎn)單說說吧。

今天咱們要聊的這位主角跟登錄倒也有點(diǎn)關(guān)系。先來簡(jiǎn)單摘抄一段Cookie的描述:

Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行 session 跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。定義于 RFC2109 和 2965 中的都已廢棄,最新取代的規(guī)范是 RFC6265

那簡(jiǎn)單來說Cookie就是一個(gè)瀏覽器上的緩存或者叫小數(shù)據(jù)庫也行,在沒有LocalStorage之前,我們前端工程師就只能用這破玩意當(dāng)數(shù)據(jù)庫使。

那現(xiàn)在問題來了,這玩意對(duì)反爬到底有什么幫助呢。

好了,我的經(jīng)典套路又要來了,先假裝介紹反爬技巧:

一.為什么Cookie能夠做反爬?

這個(gè)問題遠(yuǎn)比前兩篇文章里的要難回答,因?yàn)镮P和驗(yàn)證碼都是實(shí)打?qū)嵉脑驅(qū)е氯思沂欠磁赖纳仙鲜帧5荂ookie則不然,Cookie上的反爬則更多的是純粹人與人之間的對(duì)抗,Cookie由于是存儲(chǔ)在客戶端上導(dǎo)致其偽造成本極低,那為什么還有那么多的網(wǎng)頁采用Cookie來做反爬呢?(當(dāng)然很多爬蟲菜鳥工程師可能都判斷不出來是用Cookie在做反爬),是因?yàn)槟壳癑avascript混淆的手段也是花樣百出,任你是Javascript的高手高手高高手,我也能用惡心的招數(shù)(比如把所有代碼拆成ASCII碼數(shù)組,再動(dòng)態(tài)拼合后eval)來懟得你不想吃飯。這也成就了Cookie反爬成為除IP和驗(yàn)證碼這兩類可見的反爬手段之后最重要的一種補(bǔ)充。當(dāng)然具體Javascript對(duì)抗相關(guān)的內(nèi)容我們下一篇文章再講。

二.怎么做好Cookie反爬?

首先咱們得知道,常見的Cookie設(shè)置方式有兩種,一種在后端設(shè)置,通過Response的Header傳輸?shù)角岸藶g覽器中,如下圖:

另一種則更加隱蔽,通過前端調(diào)用document.cookie來設(shè)置,對(duì)于反爬效果來說,第二種顯然比第一種效果來的好的多,起碼能讓反反爬工程師少陪老婆一個(gè)星期,是不是想起來都覺得很過癮呢。當(dāng)然直接調(diào)用document.cookie來設(shè)置基本是沒什么效果的,一定要配合上Javascript的混淆才能熬出一鍋反爬的好湯來。至于怎么混淆,我們也留到下一篇文章再講。

三.寫爬蟲時(shí)發(fā)現(xiàn)Cookie很復(fù)雜該怎么分析?

我們公司有專門做爬蟲的同事一見到復(fù)雜的Cookie就想哭,Cookie確實(shí)屬于反反爬中相當(dāng)難纏的對(duì)手,應(yīng)該說跟Request中有一個(gè)摸不著頭腦的參數(shù)值可以并駕齊驅(qū)。那我們遇到這種Cookie應(yīng)該如何沉著應(yīng)對(duì)呢?下面我就給大家把解題思路講一講,考試必考啊。

首先一定準(zhǔn)備好Chrome,老師其他工具用的少,就不展開了。

1. 先刪掉Cookie看正不正常的

第一步也是最重要的一步,千萬記得先把Cookie都刪掉請(qǐng)求一次,如果沒問題,萬事大吉。這里注意對(duì)于Cookie來說一定要把環(huán)境處理好,因此測(cè)試之前一定記得點(diǎn)開『打開新的隱身窗口』的選項(xiàng)。每次測(cè)試完了,打開控制界面,清空Cookie再做下一次測(cè)試。

2. 再找Response中的Cookie

如果不行,咱們就開始找這些Cookie是怎么來的,首先不少的Cookie都是Http Reponse里返回的,那么清理掉Cookie,刷新頁面,點(diǎn)開network的標(biāo)簽頁,一個(gè)一個(gè)請(qǐng)求點(diǎn)下去,很快就會(huì)發(fā)現(xiàn)是哪個(gè)請(qǐng)求返回的,具體如下圖所示:

根據(jù)我們多年做爬蟲的經(jīng)驗(yàn),先訪問一下首頁拿Response的Cookie是一個(gè)成功率很高的反反爬途徑。

3. 找Javascript的關(guān)鍵字

如果還沒找到,咱們就進(jìn)行下一步:找到Cookie中比較特別的詞(至于什么是特別的詞,需要大家用正常人的智商去判斷)。用這個(gè)詞去主要的Javascript文件中搜索。一般來說會(huì)找到文件中具體是哪一句設(shè)置的,如果這個(gè)邏輯看著很復(fù)雜,可以在這一句打斷點(diǎn)調(diào)試來判斷這個(gè)Cookie到底如何生成的。

4. 終極方案Break-on-Access

還是找不到的話,那證明開發(fā)這個(gè)網(wǎng)站的工程師是一個(gè)反爬的好手,那我們只能祭上我們的終極殺器:Chrome Snippets-paulirish/break-on-access

關(guān)于這個(gè)Chrome Snippets怎么使用,大家直接參考這個(gè)這個(gè)Github的鏈接,解釋的挺清楚。有了這個(gè)工具,我們調(diào)用一下:

breakOn(document, 'cookie');

就可以在任何語句修改Cookie的時(shí)候,進(jìn)入斷點(diǎn)。再通過單點(diǎn)調(diào)試,逐步揭開反爬工程師險(xiǎn)惡的面紗了。

至于如何單點(diǎn)調(diào)試,老師就不去做痛苦的回憶了,同學(xué)們自己去體會(huì)把。

——————————————最后再說兩句————————————————

其實(shí)Cookie只是整個(gè)Javascript反爬中的一部分,至于為什么單獨(dú)寫一篇,確實(shí)是Cookie的反爬也有一定自己的特點(diǎn),跟純粹的Javascript反爬有一些區(qū)別,另外LocalStorage也有一些使用技巧,如百度統(tǒng)計(jì)會(huì)在可以存LocalStorage的時(shí)候,存儲(chǔ)信息來判斷是不是老用戶等等。不過因?yàn)榇蠖嗳瞬辉诜磁乐惺褂?,所以我們就不展開聊了。

下一篇我們就要進(jìn)入可能整個(gè)系列最重要一篇文章-Javascript反爬加密與逆向破解,如果前三篇只是介紹兵器,那么下一篇?jiǎng)t是真正的內(nèi)功心法了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多