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