首頁  >  文章  >  後端開發  >  python怎麼做反爬

python怎麼做反爬

(*-*)浩
(*-*)浩原創
2019-07-01 14:10:112951瀏覽

網路爬蟲,是一個自動提取網頁的程序,它為搜尋引擎從萬維網上下載網頁,是搜尋引擎的重要組成。但當網路爬蟲被濫用後,網路上就出現太多同質的東西,原創性得不到保護。於是,很多網站開始反網路爬蟲,想辦法保護自己的內容。

python怎麼做反爬

一:User-Agent Referer偵測(推薦學習:Python影片教學

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相關技術文章,請造訪Python教學欄位學習!

以上是python怎麼做反爬的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn