1. 程式人生 > >python爬蟲筆記(六)——應對反爬策略

python爬蟲筆記(六)——應對反爬策略

以下總結的全是單機爬取的應對反爬策略

1、設定爬取速度,由於爬蟲傳送請求的速度比較快,會對伺服器造成一定的影響,儘可能控制爬取速度,做到文明爬取

2、重啟路由器。並不是指物理上的插拔路由器,而是指模擬路由器重啟時傳送的表單。登陸自己的路由器,一般路由器會提供重啟路由器的選項,根據路由器的重啟特點進行模擬,如果覺得模擬請求麻煩,那就通過selenium+chromedriver直接點選重啟,前提是路由器本身是獲得動態IP的

3、設定請求代理,不過代理不是非常穩定,並且有一部分代理不是真正的高匿代理,只是它自己這麼寫

4、多主機策略,這種策略目前看來比較可靠,一般一些網站會部署許多伺服器,而我們在本機上ping網站,由於寬頻運營商的原因,往往只能訪問到固定的一個伺服器,拿豆瓣做例子,本機ping豆瓣:

本機只訪問了其中一臺伺服器而已,利用postman進行驗證:

1、

2、

3、

豆瓣本身沒有配置IP訪問時的virtualhost,通過IP訪問伺服器一定要在http頭部指明host:www.douban.com,python3.6使用urllib訪問特定IP地址的方式:

from urllib import request

header={
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Encoding': 'br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Content-Length': '70',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Host': 'www.douban.com',
        'Origin': 'https://www.douban.com',
        'Referer': 'https://www.douban.com/',
        'Upgrade-Insecure-Requests': '1',
        #'User-Agent': 'User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
        #'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0'
        }

req=request.Request('http://154.8.131.171',headers=header)

這種策略的並行性也比較高,在單IP的情況下,通過多程序爬取同一臺伺服器上的網站被禁的可能性比較大,拿上面的例子來說,我們可以啟動三個程序分別訪問豆瓣的三臺主機,提高爬取速度

5、頻繁更改user-agent

6、有些網站對於某些IP地址不會做過多限制,例如學校裡的公網IP,因為學校人數多,訪問量大沒什麼奇怪,(雖然我學校公網IP貌似有限制............爬取速度過快還是會被封