Python爬蟲(chóng)小技巧之偽造隨機(jī)的User-Agent
前言
不管是做開(kāi)發(fā)還是做過(guò)網(wǎng)站的朋友們,應(yīng)該對(duì)于User Agent一點(diǎn)都不陌生,User Agent 中文名為用戶代理,簡(jiǎn)稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等
在Python爬蟲(chóng)的過(guò)程中經(jīng)常要模擬UserAgent, 因此自動(dòng)生成UserAgent十分有用
通過(guò)UA來(lái)判斷不同的設(shè)備或者瀏覽器是開(kāi)發(fā)者最常用的方式方法,這個(gè)也是對(duì)于Python反爬的一種策略,但是有盾就有矛啊
寫(xiě)好爬蟲(chóng)的原則只有一條:
就是讓你的抓取行為和用戶訪問(wèn)網(wǎng)站的真實(shí)行為盡量一致
1、偽造UA字符串,每次請(qǐng)求都使用隨機(jī)生成的UA
為了減少?gòu)?fù)雜度,隨機(jī)生成UA的功能通過(guò)第三方模塊庫(kù)fake-useragent實(shí)現(xiàn),使用pip進(jìn)行安裝
pip install fake-useragent
2、生成一個(gè)UA字符串只需要如下代碼
from fake_useragent import UserAgent ua = UserAgent()
各瀏覽器的User-Agent
這個(gè)庫(kù)還有一個(gè)其他的功能,就是可以隨機(jī)各瀏覽器的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
隨機(jī)User-Agent
寫(xiě)爬蟲(chóng)最實(shí)用的就是可以隨意變換headers,一定要有隨機(jī)性
在這里我寫(xiě)了三個(gè)隨機(jī)生成UA,三次打印都不一樣,隨機(jī)性很強(qiáng),十分方便
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
當(dāng)然,你如果不想這么用的話,你也可以自己搜集一些UA,存為文本文件,然后打開(kāi)讀取來(lái)用
附:常用的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", ]
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Python實(shí)現(xiàn)繪制Matlab格式的地圖邊框的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)繪制Matlab格式的地圖邊框,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-09-09
Python 使用元類type創(chuàng)建類對(duì)象常見(jiàn)應(yīng)用詳解
這篇文章主要介紹了Python 使用元類type創(chuàng)建類對(duì)象,結(jié)合實(shí)例形式詳細(xì)分析了Python元類的概念、功能及元類type創(chuàng)建類對(duì)象的常見(jiàn)應(yīng)用技巧,需要的朋友可以參考下2019-10-10
python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Python調(diào)用.net動(dòng)態(tài)庫(kù)實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python調(diào)用.net動(dòng)態(tài)庫(kù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
基于Flask框架添加多個(gè)AI模型的API并進(jìn)行交互
這篇文章主要介紹了如何基于 Flask 框架開(kāi)發(fā) AI 模型 API 管理系統(tǒng),允許用戶添加、刪除不同 AI 模型的 API 密鑰,感興趣的可以了解下2025-03-03
OpenCV+python3實(shí)現(xiàn)視頻分解成圖片
這篇文章主要為大家詳細(xì)介紹了OpenCV+python3實(shí)現(xiàn)視頻分解成圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

