本篇內(nèi)容介紹了“python常見的反爬措施分享”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站設計、網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元興安盟做網(wǎng)站,已為上家服務,為興安盟各地企業(yè)和個人服務,聯(lián)系電話:18982081108
一、反爬技術Headers:
從用戶的Headers進行反爬是最常見的反爬蟲策略。Headers(上一講中已經(jīng)提及)是一種區(qū)分瀏覽器行為和機器行為中最簡單的方法,還有一些網(wǎng)站會對Referer(上級鏈接)進行檢測(機器行為不太可能通過鏈接跳轉(zhuǎn)實現(xiàn))從而實現(xiàn)爬蟲。
相應的解決措施:通過審查元素或者開發(fā)者工具獲取相應的Headers然后把相應的Headers傳輸給python的requests,這樣就能很好地繞過。
二、反爬技術IP限制
一些網(wǎng)站會根據(jù)你的IP地址訪問的頻率,次數(shù)進行反爬。也就是說如果你用單一的IP地址訪問頻率過高,那么服務器會在短時間內(nèi)禁止這個IP訪問。
解決措施:構造自己的IP代理池,然后每次訪問時隨機選擇代理(但一些IP地址不是非常穩(wěn)定,需要經(jīng)常檢查更新)。
三、反爬技術UA限制
UA是用戶訪問網(wǎng)站時候的瀏覽器標識,其反爬機制與ip限制類似。
解決措施:構造自己的UA池,每次python做requests訪問時隨機掛上UA標識,更好地模擬瀏覽器行為。當然如果反爬對時間還有限制的話,可以在requests設置timeout最好是隨機休眠,這樣會更安全穩(wěn)定,time.sleep()。
四、反爬技術驗證碼反爬蟲或者模擬登陸
驗證碼:這個辦法也是相當古老并且相當?shù)挠行Ч绻粋€爬蟲要解釋一個驗證碼中的內(nèi)容,這在以前通過簡單的圖像識別是可以完成的,但是就現(xiàn)在來講,驗證碼的干擾線,噪點都很多,甚至還出現(xiàn)了人類都難以認識的驗證碼(~~~~~~~)。
相應的解決措施:驗證碼識別的基本方法:截圖,二值化、中值濾波去噪、分割、緊縮重排(讓高矮統(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)
五、反爬技術Ajax動態(tài)加載
網(wǎng)頁的不希望被爬蟲拿到的數(shù)據(jù)使用Ajax動態(tài)加載,這樣就為爬蟲造成了絕大的麻煩,如果一個爬蟲不具備js引擎,或者具備js引擎,但是沒有處理js返回的方案,或者是具備了js引擎,但是沒辦法讓站點顯示啟用腳本設置?;谶@些情況,ajax動態(tài)加載反制爬蟲還是相當有效的。
Ajax動態(tài)加載的工作原理是:從網(wǎng)頁的url加載網(wǎng)頁的源代碼之后,會在瀏覽器里執(zhí)行JavaScript程序。這些程序會加載出更多的內(nèi)容,并把這些內(nèi)容傳輸?shù)骄W(wǎng)頁中。這就是為什么有些網(wǎng)頁直接爬它的URL時卻沒有數(shù)據(jù)的原因。
處理方法:若使用審查元素分析”請求“對應的鏈接(方法:右鍵→審查元素→Network→清空,點擊”加載更多“,出現(xiàn)對應的GET鏈接尋找Type為text/html的,點擊,查看get參數(shù)或者復制RequestURL),循環(huán)過程。如果“請求”之前有頁面,依據(jù)上一步的網(wǎng)址進行分析推導第1頁。以此類推,抓取抓Ajax地址的數(shù)據(jù)。對返回的json使用requests中的json進行解析,使用eval()轉(zhuǎn)成字典處理(上一講中的fiddler可以格式化輸出json數(shù)據(jù)。
六、反爬技術cookie限制
一次打開網(wǎng)頁會生成一個隨機cookie,如果再次打開網(wǎng)頁這個cookie不存在,那么再次設置,第三次打開仍然不存在,這就非常有可能是爬蟲在工作了。
解決措施:在Headers掛上相應的cookie或者根據(jù)其方法進行構造(例如從中選取幾個字母進行構造)。如果過于復雜,可以考慮使用selenium模塊(可以完全模擬瀏覽器行為)。
“python常見的反爬措施分享”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!