您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“python常見的反爬措施分享”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一、反爬技術(shù)Headers:
從用戶的Headers進(jìn)行反爬是最常見的反爬蟲策略。Headers(上一講中已經(jīng)提及)是一種區(qū)分瀏覽器行為和機(jī)器行為中最簡單的方法,還有一些網(wǎng)站會對Referer(上級鏈接)進(jìn)行檢測(機(jī)器行為不太可能通過鏈接跳轉(zhuǎn)實現(xiàn))從而實現(xiàn)爬蟲。
相應(yīng)的解決措施:通過審查元素或者開發(fā)者工具獲取相應(yīng)的Headers然后把相應(yīng)的Headers傳輸給python的requests,這樣就能很好地繞過。
二、反爬技術(shù)IP限制
一些網(wǎng)站會根據(jù)你的IP地址訪問的頻率,次數(shù)進(jìn)行反爬。也就是說如果你用單一的IP地址訪問頻率過高,那么服務(wù)器會在短時間內(nèi)禁止這個IP訪問。
解決措施:構(gòu)造自己的IP代理池,然后每次訪問時隨機(jī)選擇代理(但一些IP地址不是非常穩(wěn)定,需要經(jīng)常檢查更新)。
三、反爬技術(shù)UA限制
UA是用戶訪問網(wǎng)站時候的瀏覽器標(biāo)識,其反爬機(jī)制與ip限制類似。
解決措施:構(gòu)造自己的UA池,每次python做requests訪問時隨機(jī)掛上UA標(biāo)識,更好地模擬瀏覽器行為。當(dāng)然如果反爬對時間還有限制的話,可以在requests設(shè)置timeout最好是隨機(jī)休眠,這樣會更安全穩(wěn)定,time.sleep()。
四、反爬技術(shù)驗證碼反爬蟲或者模擬登陸
驗證碼:這個辦法也是相當(dāng)古老并且相當(dāng)?shù)挠行Ч?,如果一個爬蟲要解釋一個驗證碼中的內(nèi)容,這在以前通過簡單的圖像識別是可以完成的,但是就現(xiàn)在來講,驗證碼的干擾線,噪點都很多,甚至還出現(xiàn)了人類都難以認(rèn)識的驗證碼(~~~~~~~)。
相應(yīng)的解決措施:驗證碼識別的基本方法:截圖,二值化、中值濾波去噪、分割、緊縮重排(讓高矮統(tǒng)一)、字庫特征匹配識別。(python的PIL庫或者其他)模擬登陸(例如知乎等):用好pythonrequests中的session(下面幾行代碼實現(xiàn)了最簡單的163郵箱的登陸,其實原理是類似的~~)。
import requests
s =requests.session()
login_data={"account":" ","password":" "}
res=s.post("http://mail.163.com/",login_data)
五、反爬技術(shù)Ajax動態(tài)加載
網(wǎng)頁的不希望被爬蟲拿到的數(shù)據(jù)使用Ajax動態(tài)加載,這樣就為爬蟲造成了絕大的麻煩,如果一個爬蟲不具備js引擎,或者具備js引擎,但是沒有處理js返回的方案,或者是具備了js引擎,但是沒辦法讓站點顯示啟用腳本設(shè)置?;谶@些情況,ajax動態(tài)加載反制爬蟲還是相當(dāng)有效的。
Ajax動態(tài)加載的工作原理是:從網(wǎng)頁的url加載網(wǎng)頁的源代碼之后,會在瀏覽器里執(zhí)行JavaScript程序。這些程序會加載出更多的內(nèi)容,并把這些內(nèi)容傳輸?shù)骄W(wǎng)頁中。這就是為什么有些網(wǎng)頁直接爬它的URL時卻沒有數(shù)據(jù)的原因。
處理方法:若使用審查元素分析”請求“對應(yīng)的鏈接(方法:右鍵→審查元素→Network→清空,點擊”加載更多“,出現(xiàn)對應(yīng)的GET鏈接尋找Type為text/html的,點擊,查看get參數(shù)或者復(fù)制RequestURL),循環(huán)過程。如果“請求”之前有頁面,依據(jù)上一步的網(wǎng)址進(jìn)行分析推導(dǎo)第1頁。以此類推,抓取抓Ajax地址的數(shù)據(jù)。對返回的json使用requests中的json進(jìn)行解析,使用eval()轉(zhuǎn)成字典處理(上一講中的fiddler可以格式化輸出json數(shù)據(jù)。
六、反爬技術(shù)cookie限制
一次打開網(wǎng)頁會生成一個隨機(jī)cookie,如果再次打開網(wǎng)頁這個cookie不存在,那么再次設(shè)置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。
解決措施:在Headers掛上相應(yīng)的cookie或者根據(jù)其方法進(jìn)行構(gòu)造(例如從中選取幾個字母進(jìn)行構(gòu)造)。如果過于復(fù)雜,可以考慮使用selenium模塊(可以完全模擬瀏覽器行為)。
“python常見的反爬措施分享”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。