摘要:總的來說有兩種反爬策略,要么驗(yàn)證身份,把蟲子踩死在門口要么在網(wǎng)站植入各種反爬機(jī)制,讓爬蟲知難而退。本節(jié)內(nèi)容就著這兩種反爬策略提出一些對(duì)策。內(nèi)嵌反爬很靈活,沒有什么固定的代碼格式,要花時(shí)間去分析出來。
??之前提到過,有些網(wǎng)站是防爬蟲的。其實(shí)事實(shí)是,凡是有一定規(guī)模的網(wǎng)站,大公司的網(wǎng)站,或是盈利性質(zhì)比較強(qiáng)的網(wǎng)站,都是有高級(jí)的防爬措施的??偟膩碚f有兩種反爬策略,要么驗(yàn)證身份,把蟲子踩死在門口;要么在網(wǎng)站植入各種反爬機(jī)制,讓爬蟲知難而退。
??本節(jié)內(nèi)容就著這兩種反爬策略提出一些對(duì)策。
??就算是一些不知名的小網(wǎng)站,多多少少還會(huì)檢查一下headers驗(yàn)證一下訪者的身份,大網(wǎng)站就更不用說了(我一次爬網(wǎng)易云的時(shí)候,忘記加headers,直接被紅掉)
??所以,為了讓蟲寶們帶著信息凱旋歸來,我們要教會(huì)爬蟲們?nèi)绾?strong>偽裝;有時(shí)光偽裝也不行,我們還要教爬蟲具體"如何做人",讓自己的舉止更像普通人而不是比單身漢手速還快的未知生物。
“吾是人!”——修改user-agent:里面儲(chǔ)存的是系統(tǒng)和瀏覽器的型號(hào)版本,通過修改它來假裝自己是人。
“我從河北省來”——修改referer:告訴服務(wù)器你是通過哪個(gè)網(wǎng)址點(diǎn)進(jìn)來的而不是憑空出現(xiàn)的,有些網(wǎng)站會(huì)檢查。
“餅干!”:——帶上cookie,有時(shí)帶不帶餅干得到的結(jié)果是不同的,試著帶餅干去“賄賂”服務(wù)器讓她給你完整的信息。
詳細(xì)數(shù)據(jù)可以F12捉個(gè)包來查看其Requests Headers
headers = {"Referer":"https://accounts.pixiv.net/loginlang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index",#如某些網(wǎng)站(如p站)要檢查referer,就給他加上 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"#每個(gè)爬蟲必備的偽裝 } r = requests.get("https://segmentfault.com/a/1190000014383966",headers=headers)
headers數(shù)據(jù)通常用這兩個(gè)即可,而且筆者強(qiáng)烈推薦在爬蟲中為每個(gè)request都配個(gè)user-agent,總比什么都沒有好,加了也不會(huì)報(bào)錯(cuò)。
降低主IP訪問頻率注意:這是針對(duì)長期的,大范圍的爬蟲的
有些網(wǎng)站會(huì)監(jiān)視某個(gè)ip的訪問頻率和次數(shù),一但超過某個(gè)閾值,就把你當(dāng)作爬蟲嫌犯趕出去了,這時(shí)就要想辦法降低自己的存在感了。
Zzzzz——休眠:爬一段時(shí)間后休息一會(huì),不僅是為了自己的成功,也是為服務(wù)器著想。
我不去,我派別人去——ip代理:通過proxies參數(shù)來使用,前提是你要有ip,好的ip代理是要花錢的。
time.sleep(60)#用python自帶time模塊的休眠功能 proxies = {"http": "http://10.10.1.10:3128",#“協(xié)議類型:完整ip地址+端號(hào)” "https": "http://10.10.1.10:1080"}#代理ip字典,隨機(jī)調(diào)用 r = requests.get(url,headers=headers,proxies=proxies)反 反爬(簡析)
在系列第零篇中我提到獲取網(wǎng)頁源碼是有坑的,沒錯(cuò),有些時(shí)候headers偽裝什么的都做足了,可你還是不能如愿以償?shù)墨@得正確的網(wǎng)頁源碼,要么缺,要么給你一堆毫不相關(guān)的東西,要么干脆讓你紅掉。
這說明要點(diǎn)不是偽不偽裝的問題了,而是如何去解讀網(wǎng)頁的防爬機(jī)制從而推出解決方法,這就要求比較高的觀察和分析能力了。
就我目前遇到的主要有:
隨機(jī)校驗(yàn)碼:網(wǎng)頁生成隨機(jī)碼,并要求你將其提交才接受你的請(qǐng)求(多用在登錄驗(yàn)證中)?!@種校驗(yàn)碼通常藏在網(wǎng)頁源碼中,先取再交是策略。
無序網(wǎng)址:網(wǎng)址后跟著一大串看不出規(guī)律的東西?!@種東西是沒話說的,直接上selenium。
加密/雜亂的源碼:你知道你要的東西就在那里,但是不知道怎樣提取出來?!评斫庵i,看腦子好不好使了。
動(dòng)態(tài)加載:需要和頁面交互才能獲取更多信息,但是爬蟲沒法和它交互啊?!苯由?strong>selenium/手動(dòng)捉包分析出目標(biāo)鏈接
ajax技術(shù):異步加載,網(wǎng)頁內(nèi)容分次加載,用爬蟲只能得到第一次發(fā)出的html,導(dǎo)致信息不全?!?strong>selenium/手動(dòng)捉包分析出目標(biāo)連接
補(bǔ)充:
selenium模塊,模擬瀏覽器,強(qiáng)是強(qiáng)但是缺點(diǎn)是慢。
其實(shí)動(dòng)態(tài)加載是為了方便用戶點(diǎn)哪看哪的,但這也加大了爬蟲的難度,因?yàn)楹芏嘈畔⒁虼吮浑[藏了起來。
偽裝有套路,代碼直接套,多加headers總沒錯(cuò)。
內(nèi)嵌反爬很靈活,沒有什么固定的代碼格式,要花時(shí)間去分析出來。
本文新出現(xiàn)的方法/模塊,后面會(huì)有實(shí)例,不要方。
下一篇正式進(jìn)入網(wǎng)頁解析主題,之后就可以開始寫小爬蟲了?(^?^●)?。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41540.html
摘要:極簡爬蟲攻防戰(zhàn)紀(jì)要爬蟲是構(gòu)建搜索引擎的基礎(chǔ)負(fù)責(zé)抓取網(wǎng)頁信息并對(duì)網(wǎng)頁識(shí)別分類及過濾。爬蟲方終于鎖定了第一場(chǎng)戰(zhàn)役的勝局由于斷崖式技術(shù)的出現(xiàn),反爬方在瀏覽器識(shí)別戰(zhàn)役上望風(fēng)披靡。經(jīng)過反爬方的精心運(yùn)作,逐漸有效削弱了敵方的攻勢(shì)。 極簡爬蟲攻防戰(zhàn)紀(jì)要 ? ??爬蟲是構(gòu)建搜索引擎的基礎(chǔ), 負(fù)責(zé)抓取網(wǎng)頁信息并對(duì)網(wǎng)頁識(shí)別、分類及過濾。我們熟識(shí)的電商、搜索、新聞及各大門戶網(wǎng)站都有強(qiáng)大的爬蟲集群在每...
摘要:通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡單的爬蟲項(xiàng)目。從技術(shù)手段來說,網(wǎng)絡(luò)爬蟲有多種實(shí)現(xiàn)方案,如。二網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)在本次課中,將使用技術(shù)手段進(jìn)行項(xiàng)目的編寫。 摘要:本文詳細(xì)講解了python網(wǎng)絡(luò)爬蟲,并介紹抓包分析等技術(shù),實(shí)戰(zhàn)訓(xùn)練三個(gè)網(wǎng)絡(luò)爬蟲案例,并簡單補(bǔ)充了常見的反爬策略與反爬攻克手段。通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實(shí)戰(zhàn)練習(xí),寫出一些簡單的...
摘要:之前在學(xué)校曾經(jīng)用過的方法做過一些爬蟲腳本來玩,從正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實(shí)踐。爬蟲腳本通常會(huì)很頻繁的進(jìn)行網(wǎng)絡(luò)請(qǐng)求,比如要爬取豆瓣排行榜的電影,就會(huì)連續(xù)發(fā)送個(gè)網(wǎng)絡(luò)請(qǐng)求。 之前在學(xué)校曾經(jīng)用過request+xpath的方法做過一些爬蟲腳本來玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實(shí)踐...
摘要:之前在學(xué)校曾經(jīng)用過的方法做過一些爬蟲腳本來玩,從正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實(shí)踐。爬蟲腳本通常會(huì)很頻繁的進(jìn)行網(wǎng)絡(luò)請(qǐng)求,比如要爬取豆瓣排行榜的電影,就會(huì)連續(xù)發(fā)送個(gè)網(wǎng)絡(luò)請(qǐng)求。 之前在學(xué)校曾經(jīng)用過request+xpath的方法做過一些爬蟲腳本來玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對(duì)爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實(shí)踐...
摘要:定制篩選器,對(duì)內(nèi)容進(jìn)行篩選重點(diǎn)。審查元素這是瀏覽器自帶的工具,提供抓包和檢查網(wǎng)頁源碼的功能,供使用者分析網(wǎng)頁。超時(shí)設(shè)置,如果服務(wù)器在指定秒數(shù)內(nèi)沒有應(yīng)答,拋出異常,用于避免無響應(yīng)連接,整形或浮點(diǎn)數(shù)。返回連接狀態(tài),正常。 前言 python 3.6 ?。?本爬蟲系列是面對(duì)有Python語法基礎(chǔ)的讀者寫的,如果你沒學(xué)過python,emmmm.....也沒關(guān)系,你或許能從每篇文章中學(xué)到一些...
閱讀 2764·2021-11-22 14:45
閱讀 913·2021-10-15 09:41
閱讀 1073·2021-09-27 13:35
閱讀 3696·2021-09-09 11:56
閱讀 2640·2019-08-30 13:03
閱讀 3203·2019-08-29 16:32
閱讀 3311·2019-08-26 13:49
閱讀 776·2019-08-26 10:35