您好,登錄后才能下訂單哦!
python如何實現反爬?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
網絡爬蟲,是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。但是當網絡爬蟲被濫用后,互聯網上就出現太多同質的東西,原創得不到保護。于是,很多網站開始反網絡爬蟲,想方設法保護自己的內容。
一: User-Agent +Referer檢測
User-Agent 是HTTP協議的中的一個字段, 其作用是描述發出HTTP請求的終端的一些信息。
使得服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
服務器通過這個字段就可以知道訪問網站的是什么人。對于不是正常瀏覽器的用戶進行屏蔽。
解決方案:
偽裝瀏覽器的User-Agent,因為每個瀏覽器的User-Agent不一樣,并且所有的用戶都能使用瀏覽器。所有每次請求的時候條件瀏覽器的User-Agent,就能解決UA檢測
Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的。例如有一些圖片網站在你請求圖片的時候,就會檢測你的Referer值,如果Referer不符合,不會返回正常的圖片。
解決方案:
在檢測referer的請求中,攜帶符合的referer值。
二: js混淆和渲染
所謂 JavaScript 混淆,基本就是:
1.去掉一些實際沒有調用的函數。
2.將零散的變量聲明合并。
3.邏輯函數的精簡。
4.變量名的簡化。具體要看不同的壓縮工具的考慮優劣。常見的有UglifyJS、JScrambler等工具。
js渲染其實就是對HTML頁面的修改。比如有一些網頁本身沒有返回數據,數據是經過js加載之后添加到HTML當中的。當遇到這種情況的時候,我們要知道爬蟲是不會執行JavaScript操作。所以需要用其他的方法處理。
解決方案:
1.通過閱讀網站js源碼,找到關鍵的代碼,并用python實現。
2.通過閱讀網站js源碼,找到關鍵的代碼,用PyV8,execjs等庫直接執行js代碼。
3.通過selenium庫直接模擬瀏覽器環境
三:IP限制頻次
WEB系統都是走http協議跟WEB容器連通的,每次請求至少會產生一次客戶端與服務器的tcp連接。
對于服務端來說可以很清楚的查看到,一個ip地址在單位時間內發起的請求。
當請求數超過一定的值之后,就可判斷為非正常的用戶請求。
解決方案:
1.自行設計ip代理池,通過輪換的方式,每次請求攜帶不同的代理地址。
2.ADSL動態撥號他有個獨有的特點,每撥一次號,就獲取一個新的IP。也就是它的IP是不固定的。
四:驗證碼
驗證碼(CAPTCHA)是“Completely Automated PublicTuring test to tell Computers and HumansApart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。
可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試。
這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。
解決方案:
1.手動識別驗證碼
2.pytesseract識別簡單的驗證碼
3.對接打碼平臺
4.機器學習
感謝各位的閱讀!看完上述內容,你們對python如何實現反爬大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。