1. 程式人生 > >Python爬蟲(一):爬蟲偽裝

Python爬蟲(一):爬蟲偽裝

1 簡介

對於一些有一定規模或盈利性質比較強的網站,幾乎都會做一些防爬措施,防爬措施一般來說有兩種:一種是做身份驗證,直接把蟲子擋在了門口,另一種是在網站設定各種反爬機制,讓蟲子知難而返。

2 偽裝策略

我們知道即使是一些規模很小的網站通常也會對來訪者的身份做一下檢查,如驗證請求 Headers,而對於那些上了一定規模的網站就更不用說了。因此,為了讓我們的爬蟲能夠成功爬取所需資料資訊,我們需要讓爬蟲進行偽裝,簡單來說就是讓爬蟲的行為變得像普通使用者訪問一樣。

2.1 Request Headers問題

為了演示我使用百度搜索 163郵箱

使用 F12 工具看一下請求資訊

在上圖中,我們可以看到 Request Headers 中包含 Referer 和 User-Agent 兩個屬性資訊,Referer 的作用是告訴伺服器該網頁是從哪個頁面連結過來的,User-Agent 中文是使用者代理,它是一個特殊字串頭,作用是讓伺服器能夠識別使用者使用的作業系統、CPU 型別、瀏覽器等資訊。通常的處理策略是:1)對於要檢查 Referer 的網站就加上;2)對於每個 request 都新增 User-Agent。

2.2 IP限制問題

有時我們可能會對一些網站進行長期或大規模的爬取,而我們在爬取時基本不會變換 IP,有的網站可能會監控一個 IP 的訪問頻率和次數,一但超過這個閾值,就可能認作是爬蟲,從而對其進行了遮蔽,對於這種情況,我們要採取間歇性訪問的策略。

通常我們爬取是不會變換 IP 的,但有時可能會有一些特殊情況,要長時間不間斷對某網站進行爬取,這時我們就可能需要採用 IP 代理的方式,但這種方式一般會增加我們開銷,也就是可能要多花錢。

3 總結

有些時候我們進行爬取時 Request Headers 什麼的已經做好了偽裝,卻並未得到如願以償的結果,可能會出現如下幾種情況:得到的資訊不完整、得到不相關的資訊、得不到資訊,這種情況我們就需要研究網站的防爬機制,對其進行詳細分析了。常見的幾種我列一下:

1)不規則資訊:網址上會有一些沒有規則的一長串資訊,這種情況通常採用 selenium(模擬瀏覽器,效率會低一些) 解決;
2)動態校驗碼:比如根據時間及一些其他自定義規則生成,這種情況我們就需要找到其規則進行破解了;

3)動態互動:需要與頁面進行互動才能通過驗證,可以採用 selenium 解決;
4)分批次非同步載入:這種情況獲取的資訊可能不完整,可以採用 selenium 解