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