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 解決。

posted @ 2019-10-04 08:34 程序員野客 閱讀(...) 評論(...) 編輯 收藏
乐就娱乐