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

  1. 首先需要准备 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']
  1. 将 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)
  1. 在发送请求时随机选择一个 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 或返回错误的页面或资源。

相关文章