Python爬蟲小技巧之偽造隨機的User-Agent
前言
不管是做開發(fā)還是做過網站的朋友們,應該對于User Agent一點都不陌生,User Agent 中文名為用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等
在Python爬蟲的過程中經常要模擬UserAgent, 因此自動生成UserAgent十分有用
通過UA來判斷不同的設備或者瀏覽器是開發(fā)者最常用的方式方法,這個也是對于Python反爬的一種策略,但是有盾就有矛啊
寫好爬蟲的原則只有一條:
就是讓你的抓取行為和用戶訪問網站的真實行為盡量一致
1、偽造UA字符串,每次請求都使用隨機生成的UA
為了減少復雜度,隨機生成UA的功能通過第三方模塊庫fake-useragent實現(xiàn),使用pip進行安裝
pip install fake-useragent
2、生成一個UA字符串只需要如下代碼
from fake_useragent import UserAgent ua = UserAgent()
各瀏覽器的User-Agent
這個庫還有一個其他的功能,就是可以隨機各瀏覽器的UA
IE瀏覽器的UA:
print(ua.ie)
Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
Opera瀏覽器的UA:
print(ua.opera)
Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00
Chrome瀏覽器的UA:
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瀏覽器的UA:
print(ua.firefox)
Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1
Safari瀏覽器的UA:
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
隨機User-Agent
寫爬蟲最實用的就是可以隨意變換headers,一定要有隨機性
在這里我寫了三個隨機生成UA,三次打印都不一樣,隨機性很強,十分方便
print(ua.random) print(ua.random) print(ua.random)
Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/37.0.2062.124 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36
當然,你如果不想這么用的話,你也可以自己搜集一些UA,存為文本文件,然后打開讀取來用
附:常用的User-Agent列表
USER_AGENTS = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)", "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)", "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0", "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52", ]
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Python實現(xiàn)生命游戲的示例代碼(tkinter版)
生命游戲是由劍橋大學約翰·何頓·康威設計的計算機程序,一時吸引了各行各業(yè)一大批人的興趣。本文將用Python實現(xiàn)這一游戲,感興趣的可以嘗試一下2022-08-08python實現(xiàn)測試工具(二)——簡單的ui測試工具
這篇文章主要介紹了python如何實現(xiàn)簡單的ui測試工具,幫助大家更好的利用python進行測試工作,感興趣的朋友可以了解下2020-10-10python虛擬環(huán)境創(chuàng)建的兩種方法
本文主要介紹了python虛擬環(huán)境創(chuàng)建的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05python使用ctypes模塊調用windowsapi獲取系統(tǒng)版本示例
這篇文章主要介紹了python使用ctypes模塊調用windowsapi獲取系統(tǒng)版本示例,需要的朋友可以參考下2014-04-04python繪制子圖技巧之plt.subplot、plt.subplots及坐標軸修改
一個圖片里邊繪制多個圖像是繪圖中的常見需求,下面這篇文章主要給大家介紹了關于python繪制子圖技巧之plt.subplot、plt.subplots及坐標軸修改的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05Django在視圖中使用表單并和數(shù)據庫進行數(shù)據交互的實現(xiàn)
本文主要介紹了Django在視圖中使用表單并和數(shù)據庫進行數(shù)據交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07