1. 程式人生 > >pathon爬蟲中簡單的請求頭fake_useragent庫,處理反爬問題

pathon爬蟲中簡單的請求頭fake_useragent庫,處理反爬問題

安裝

pip3 install fake_useragent

各瀏覽器User-Agent的值

from fake_useragent import UserAgent
ua = UserAgent()
# ie瀏覽器的user agent
print(ua.ie)
Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
#opera瀏覽器
print(ua.opera)
Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11
#chrome瀏覽器
print(ua.chrome)
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2
#firefox瀏覽器
#firefox瀏覽器
print(ua.firefox)
Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
#safri瀏覽器
print(ua.safari)
Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

實用性

寫到這裡大家會發現寫爬蟲最實用的是可以隨意變換headers,一定要有隨機性。在這裡我寫了三個隨機生成user agent,三次列印都不一樣,隨機性很強,十分方便。

from fake_useragent import UserAgent
ua = UserAgent()
print(ua.random)
print(ua.random)
print(ua.random)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1
Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11

爬蟲中具體使用方法

import requests
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent': ua.random}
url = '待爬網頁的url'
resp = requests.get(url, headers=headers)
#省略具體爬蟲的解析程式碼,大家可以回去試試
...

看到這裡不禁會有疑問,一個請求頭怎麼可能稱為必殺技,那麼,隨機的請求頭外加上設定睡眠,隨機發起請求呢?

昨天爬一個網站一直被封ip感覺代理池整了1000個ip還是會被封,甚至出現爬取資料不完整的情況,一直糾結於如何獲取並且驗證更高效的代理ip的思路無解,瀏覽網頁時候無意中點選網頁想到爬蟲是以固定速度訪問,即便是設定了延時,很容易根據這一點被判定為爬蟲,那麼設定睡眠是很好的選擇,再加上隨機的請求頭,只用了不到20個代理ip很完美的解決了問題。遇到問題,一條路走不通的時候換一條路也是可以的,原則只有一條,瀏覽器能訪問的內容,爬蟲肯定能抓取,關鍵在於能不能讓自己的爬蟲偽裝的更像瀏覽器。


連結:https://www.jianshu.com/p/b76df35aec93