User-Agent 轮换:如何使用 Python 切换 User-Agent 来规避反爬虫机制?
2023-04-17 00:00:00
User
一、User-Agent 简介
在访问网站时,浏览器会发送请求,而这个请求会带上 User-Agent,用于告诉服务器客户端使用的浏览器类型、版本号以及操作系统等信息。服务器根据 User-Agent 来返回不同的页面或资源,因此 User-Agent 扮演了非常重要的角色。
在爬虫访问网站时,一些网站会根据 User-Agent 来判断是否为爬虫,如果判断为爬虫,就会返回错误的页面或资源,或者直接被封禁 IP,因此爬虫程序需要经常更换 User-Agent。
二、如何切换 User-Agent
- 首先需要准备 User-Agent 列表。
可以从网上找一些已经准备好的 User-Agent 列表,也可以使用第三方库 fake_useragent 来随机生成 User-Agent 列表。下面是使用 fake_useragent 生成 User-Agent 列表的代码:
pip install fake_useragent from fake_useragent import UserAgent ua = UserAgent() user_agents = ua.data['browsers']['chrome']
- 将 User-Agent 列表写入请求头中。
可以使用 requests 库来发送 HTTP 请求,并将 User-Agent 写入请求头中。下面是一个例子:
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('http://pidancode.com', headers=headers)
- 在发送请求时随机选择一个 User-Agent。
在发送请求时,可以从 User-Agent 列表中随机选择一个 User-Agent,这样每次请求就会使用不同的 User-Agent,从而达到规避反爬虫机制的效果。下面是一个例子:
import random user_agent = random.choice(user_agents) headers = {'User-Agent': user_agent} response = requests.get('http://pidancode.com', headers=headers)
三、代码演示
下面是一个完整的爬取网站并随机更换 User-Agent 的例子:
import requests from fake_useragent import UserAgent import random # 准备 User-Agent 列表 ua = UserAgent() user_agents = ua.data['browsers']['chrome'] # 随机选择一个 User-Agent user_agent = random.choice(user_agents) # 在请求头中加入 User-Agent,然后发送请求 headers = {'User-Agent': user_agent} response = requests.get('http://pidancode.com', headers=headers) print(response.text)
以上就是使用 Python 切换 User-Agent 来规避反爬虫机制的方法,使用这种方法可以有效地避免被封禁 IP 或返回错误的页面或资源。
相关文章