Python爬蟲突破反爬蟲機制知識點總結(jié)
1、構(gòu)建合理的HTTP請求標頭。
HTTP的請求頭是一組屬性和配置信息,當您發(fā)送一個請求到網(wǎng)絡(luò)服務(wù)器時。因為瀏覽器和Python爬蟲發(fā)送的請求頭不同,反爬行器很可能會被檢測到。
2、建立學(xué)習(xí)cookie。
Cookie是一把雙刃劍,有它不行,沒有它更不行。站點將通過cookie來追蹤你的訪問情況,如果發(fā)現(xiàn)你有爬蟲行為,將立即中斷您的訪問,例如,填寫表格時速度過快,或在短時間內(nèi)瀏覽大量網(wǎng)頁。而且對cookies的正確處理,也可以避免許多采集問題,建議在收集網(wǎng)站的過程中,檢查一下這些網(wǎng)站生成的cookie,然后想想哪個是爬蟲需要處理的。
3、正常時差路徑。
Python爬行器不應(yīng)破壞采集速度的原則,盡可能在每一頁訪問時間內(nèi)增加一小段間隔,能有效地幫助您避免反爬行。
4、使用代理IP,對已經(jīng)遇到過反爬蟲的分布式爬蟲來說,使用代理IP將成為您的首選。
談到Python爬蟲的發(fā)展歷史,那簡直就是與反爬蟲相戀的血淚史。因特網(wǎng)上,有網(wǎng)絡(luò)爬蟲的地方,絕對少不了反爬蟲的身影。對網(wǎng)站進行反爬蟲的截取,前提是要正確區(qū)分人與網(wǎng)絡(luò)機器人,發(fā)現(xiàn)可疑目標時,通過限制IP地址等措施,阻止您繼續(xù)訪問。
知識點擴展:
python3爬蟲--反爬蟲應(yīng)對機制
前言:
反爬蟲更多是一種攻防戰(zhàn),網(wǎng)絡(luò)爬蟲一般有網(wǎng)頁爬蟲和接口爬蟲的方式;針對網(wǎng)站的反爬蟲處理來采取對應(yīng)的應(yīng)對機制,一般需要考慮以下方面:
①訪問終端限制:這種可通過偽造動態(tài)的UA實現(xiàn);
②訪問次數(shù)限制:網(wǎng)站一般通過cookie/IP定位,可通過禁用cookie,或使用cookie池/IP池來反制;
③訪問時間限制:延遲請求應(yīng)對;
④盜鏈問題:通俗講就是,某個網(wǎng)頁的請求是有跡可循的,比如知乎的問題回答詳情頁,正常用戶行為必然是先進入問題頁,在進入回答詳情頁,有嚴格的請求順序,如果之間跳過前面請求頁面就有可能被判定為到了,通過偽造請求頭可以解決這個問題;
具體的反爬蟲策略:
①驗證碼
應(yīng)對:簡單的驗證碼可通過機器學(xué)習(xí)識別,準確率可高達,50-60%;復(fù)雜的可通過專門的打碼平臺人工打碼(依據(jù)驗證碼的復(fù)雜度,打碼工人平均每碼收1-2分錢)
②封ip(容易誤殺)
應(yīng)對:通過ip代理池/vps撥號獲取ip方式,可用低成本的獲取幾十萬ip
③滑動驗證碼:相比常規(guī)的驗證碼易被機器學(xué)習(xí)識別,滑動驗證有一定的優(yōu)勢
應(yīng)對:模擬滑動來驗證
④關(guān)聯(lián)上下文/防盜鏈:利用token/cookie的記錄能力,來關(guān)聯(lián)請求的上下文,通過判斷請求是否走了完整的流程來判定是否是爬蟲;重而反爬蟲(知乎,頭條都有該機制)
應(yīng)對:分析協(xié)議,進行全量模擬
⑤javascript 參與運算:利用簡單爬蟲無法進行json運算的特征,對中間結(jié)果進行js解析/運算
應(yīng)對:可以通過自帶 js 引擎模塊或直接使用 phantomjs 等無端瀏覽器進行自動化解析
⑥session封禁:session請求超過閾值,從而封禁(容易導(dǎo)致誤殺)
⑦UA封禁:ua請求超過閾值,從而封禁(容易導(dǎo)致誤殺)
⑧web-fongt反爬蟲機制:源代碼不展示內(nèi)容,而是提供字符集,在頁面使用了font-face定義了字符集,并通過unicode去映射展示
⑨其他:比如代碼混淆、動態(tài)加密方案、假數(shù)據(jù)等方式
到此這篇關(guān)于Python爬蟲突破反爬蟲機制知識點總結(jié)的文章就介紹到這了,更多相關(guān)Python爬蟲如何突破反爬蟲機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 數(shù)值區(qū)間處理_對interval 庫的快速入門詳解
今天小編就為大家分享一篇Python 數(shù)值區(qū)間處理_對interval 庫的快速入門詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python 語法錯誤:"SyntaxError: invalid charac
本文給大家分享Python 語法錯誤:“SyntaxError: invalid character in identifier“,原因及解決方法,文末給大家補充介紹了Python出現(xiàn)SyntaxError: invalid syntax的原因總結(jié),感興趣的朋友跟隨小編一起學(xué)習(xí)吧2023-02-02Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實例
這篇文章主要介紹了Django中ORM找出內(nèi)容不為空的數(shù)據(jù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python腳本實現(xiàn)網(wǎng)卡流量監(jiān)控
這篇文章主要介紹了Python腳本實現(xiàn)網(wǎng)卡流量監(jiān)控,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-02-02