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