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