python爬虫之如何随机更换User-Agent

python爬虫爬取网站内容时,如果什么也没带,即不带报头headers,往往会被网站管理维护人员认定为机器爬虫。因为,此时python默认的user-agent如Python-urllib/2.1一样。因此,网站管理人员会根据请求的user-agent判定你是不是机器爬虫。所以,此时往往就需要伪装user-agent,模拟成真实的浏览器去取出内容。下面是一些比较常用的浏览器的user-agent:

Chrome

"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",

Firefox

"Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"

Opera

"Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
"Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10",

Safari

"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10",
"Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5",

IE

"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

一般主要应用Chrome或者Firefox,爬虫应用的时候,可以把他们都放到列表里面。然后import random,使用random.choice(list)随机获取一个user-agent。

不过呢,现在我要介绍一个python里面更为牛逼的方法(嘘,一般人我不告诉他)——fake-useragent

这是python里面的一个useragent池,非常好用!具体怎么用呢?

首先,安装fake-useragent

    pip install fake-useragent

然后,使用方法

from fake_useragent import UserAgent

ua = UserAgent()
headers = {'User-Agent':ua.random}
注意,有些网站可能会根据user-agent来封IP,也就是说他们会根据同一个IP下,如果是很多个不同user-agent在访问,那么,此时,他们就会判定为爬虫! https://blog.youkuaiyun.com/codingforhaifeng/article/details/80506199
### 实现随机切换HTTP请求头中的User-Agent 为了在Python中实现随机更换HTTP请求头中的`User-Agent`,可以利用`fake-useragent`库来简化操作。此方法不仅能够有效防止被目标网站识别为自动化程序,还能增强爬虫的隐蔽性和成功率。 安装所需的库可以通过命令行执行: ```bash pip install fake-useragent ``` 一旦完成依赖项的安装,在实际应用过程中就可以按照如下方式进行编码[^5]。 对于简单的HTTP GET请求而言,可以直接引入并配置`UserAgent()`对象用于生成随机化的`User-Agent`字符串,并将其加入到请求头部信息之中[^1]。 ```python from urllib.request import Request, urlopen from fake_useragent import UserAgent ua = UserAgent() req = Request('https://example.com') req.add_header("User-Agent", ua.random) response = urlopen(req) html = response.read().decode('utf8') print(html) ``` 当涉及到更复杂的场景比如Selenium WebDriver控制下的浏览器自动化测试时,则可以在启动浏览器实例之前通过选项参数指定随机产生的`User-Agent`值[^3]。 ```python import time from selenium import webdriver from fake_useragent import UserAgent ua = UserAgent() chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(f'user-agent={ua.random}') driver = webdriver.Chrome(options=chrome_options) try: driver.get("https://httpbin.org/user-agent") time.sleep(2) # 等待页面加载完毕 finally: driver.quit() ``` 值得注意的是,虽然可以在单个脚本内部处理每一次发出请求前更改`User-Agent`的行为,但从设计模式的角度考虑,建议采用更加模块化的方式——创建自定义下载中间件来进行统一管理和调度,从而提升代码可读性与维护效率[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值