反爬蟲與爬蟲技術整理

反爬蟲技術

目前各類網站出於對數據的保護,會使用各種反爬蟲技術來保護自己網站的數據不被他人竊取。

1 登錄時對用戶名和密碼進行加密

例如,對某電子稅務局進行登錄的過程中,當我們輸入用戶名、密碼以及驗證碼點擊登錄後通過抓包工具可以看出發送登錄的那一次post請求的用戶名和密碼是通過加密算法後得到的,因此我們可以自己編寫複雜的算法,對用戶名和密碼進行加密,只要爬蟲的那一方無法得知加密規則,就不能進行模擬登錄了。
例如加密前用戶名:Anna151898
加密後的用戶名:
011613ee4904a45120f9b84663d890196438e833104305c0ae8e59d2f2cb9abcf7802d866f65996560a5da28b3958e57966b0ed31dd28f2c21cbf406ec424c624464f77a2bc046c15634412da292a66739dec38c4e4f6958587d4f1e18ac08b362698f4e5f1b6eb6a32587822a676b8465b569969cb6ee9e18d494e9637e761a

2 登錄時不僅只是用戶名和密碼

例如在登錄的過程還需要傳遞一個random_num,這個數字是怎麼生成的你就要自己去分析網頁去尋找了。

3 登錄時採用複雜的驗證碼

現在各種數字字母組合的驗證碼採用ocr或者深度學習已經能夠非常容易的破解了,但是類似於行爲驗證碼例如點擊驗證碼和滑動驗證碼。

在這裏插入圖片描述
上圖爲點擊驗證碼,這種驗證碼一來去識別點擊文字的位置比較難,二來服務器會檢查你點擊的動作,在爬蟲請求裏是無法模擬這個動作的。

4 對訪問信息進行統計予以封鎖

對訪問信息進行統計予以封鎖主要體現在以下幾個方面:
如果單個IP訪問超過閾值,予以封鎖;
如果單個session訪問超過閾值,予以封鎖;
如果單個userAgent訪問超過閾值,予以封鎖;

5 User-Agent反爬和Referer反爬

User-Agent代表瀏覽器標誌,如果一個請求直接從腳本發送過來,服務器判斷不是通過瀏覽器的形式,對這種請求進行阻止,現在這種已經沒什麼技術含量了,因爲爬蟲可以攜帶自定義的User-Agent;
另外一種是referer反爬,比如用戶通過爬蟲模擬登錄了一個網站,如果直接進行扣款請求操作,必須攜帶這個請求的上一個網頁地址是什麼,負責服務器會判定請求非法。

6 目前比較流行的反爬技術

通過對淘寶網的分析,得知淘寶在用戶輸入用戶名和密碼點擊登錄按鈕時發送的登錄post請求並不只是攜帶了用戶名和密碼信息,還有一條或者幾條信息,例如淘寶攜帶了一個ua。
在這裏插入圖片描述
這個ua的數據是用戶一輸完用戶名就會產生一個ua,而且這個ua應該是淘寶服務器後臺生成的,而且ua在每次動作都都會變化,淘寶的反爬還是很強大的。
下面講解一下爲什麼淘寶登錄無法破解?
首先我們在輸入用戶名完成後,會向服務器發送一個post請求,服務器返回一個ua
這裏有的人可能會想到採用selenium去模擬瀏覽器來輸入這個用戶名的操作不就行了,因爲selenium會驅動我們電腦上真實存在的瀏覽器來代替我們進行輸入、點擊等操作。這裏要介紹一下,在任何語言中使用selenium都需要安裝相應的瀏覽器驅動,例如我們在Python裏寫上在淘寶登錄頁面用戶名這個輸入框輸入11111時,是需要瀏覽器驅動來啓動瀏覽器來完成這一動作,服務器後臺其實很容易判斷這一過程是真實的人在瀏覽器上輸入還是採用selenium來輸入的。

爬蟲技術

介紹了反爬技術我們再來介紹一下爬蟲技術

1 模擬登錄的過程

在我們登錄某一個網站時,登錄的過程一般就一條post請求,只要攜帶正確的參數,包含用戶名和密碼以及其它參數進行發送就可以登錄成功。當然,參數一定要正確。遇到用戶名和密碼是加密的要去分析網頁代碼,找到加密算法的原理,自己寫一個對應的將用戶名和密碼進行加密。
當遇到登錄過程發送的參數除了用戶名和密碼外,要從網頁源碼中進行分析,其它那些參數怎麼來的。

2 驗證碼破解

對於數字字母驗證碼包括數字計算,都是先獲取這張驗證碼圖片,利用OCR技術及深度學習技術進行識別。那麼對於滑動驗證碼和點擊的驗證碼怎麼弄就比較麻煩了,因爲在爬蟲裏很難實現這個動作。之前接觸的一個項目對於點擊的驗證碼有一個插件,使用那個插件得到驗證碼成功驗證時返回的信息,將這條信息帶入登錄請求中進行發送。這種問題再於插件得到的驗證信息有時間限制,而且去操作插件進行點擊驗證時需要人手動去點擊的。

3 僞裝

爬蟲是可以進行僞裝成特定瀏覽器的,在user-agent裏進行添加;遇到反Referer的,需要分析我們發送的請求在真實環境下的上一級網頁目錄是什麼,將這個網址帶進去。

4 使用ip代理

爬蟲會長時間去模擬不同用戶訪問一個網站,在訪問的過程中,由於一般都放在一個電腦上,因此IP地址不會變。服務器那邊會檢查不同用戶的IP地址,長時間多個用戶來自於同一個地址,會對這個IP地址進行封殺。針對這種去情況,使用IP代理,僞裝成不同的IP地址對服務器進行訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章