CAPSOLVER
博客
在Selenium中更改User-Agent | 步骤和最佳实践

在 Selenium 中更改用户代理 | 步骤 & 最佳实践

Logo of CapSolver

Anh Tuan

Data Science Expert

05-Dec-2025

在Selenium中更改用户代理是许多网络爬虫任务中的关键步骤。它有助于将自动化脚本伪装成常规浏览器,从而避免被网站检测到。本指南将指导您如何在Selenium中更改Google Chrome的用户代理,并提供最佳实践,以确保您的网络爬虫任务顺利进行。

目录

  1. 理解Selenium用户代理
  2. Selenium中的默认用户代理
  3. 为什么要更改用户代理?
    a. 在Google Chrome Selenium中更改用户代理
    b. 在Firefox Selenium中更改用户代理
  4. 更顺畅访问网站的最佳实践
  5. 结论

理解Selenium用户代理

用户代理字符串是HTTP头部的重要组成部分,在浏览器和网页服务器之间的通信中起着关键作用。它提供了关于发送请求的浏览器、操作系统和设备的特定信息。以下是一个典型的用户代理字符串示例:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36

该字符串表明请求来自运行在Windows操作系统上的Chrome浏览器。

然而,当使用Selenium进行网页自动化时,默认的用户代理字符串可能会暴露请求是由自动化脚本发出的。配备反机器人措施的网站可以轻易检测到这一点,并阻止访问以防止自动化爬虫或测试。因此,在Selenium中自定义用户代理字符串至关重要,这样请求看起来像是来自真实浏览器,从而降低被检测和阻止的风险。

要实现这一点,您可以修改Selenium中的用户代理字符串,使其与标准浏览器的用户代理匹配,从而增强自动化脚本的隐蔽性和效果。

Selenium中的默认用户代理

是的,Selenium在发送HTTP请求时会使用用户代理字符串来标识自己。默认情况下,Selenium将使用它所操作的浏览器的用户代理字符串。这意味着当您使用Chrome WebDriver运行Selenium脚本时,用户代理字符串将反映Chrome的默认用户代理。

然而,这个默认的用户代理有时可能会向网页服务器表明请求来自自动化脚本,使您的Selenium操作容易被反机器人系统检测和阻止。自定义用户代理字符串可以缓解这一问题,使您的脚本更自然地融入常规浏览器流量。

领取您的CapSolver优惠码

立即提升您的自动化预算!
在充值CapSolver账户时使用优惠码 CAPN,每次充值可获得额外 5% 的奖励 —— 没有限制。
现在在您的 CapSolver仪表板

为什么要更改用户代理?

如前所述,用户代理字段包含有关发起请求的浏览器类型、版本、引擎和操作系统的信息。如果目标网站在短时间内收到多个来自相同用户代理的请求,它就有理由怀疑这些请求来自同一个用户或单个机器人。然后,网站管理员可以暂时阻止来自该特定用户代理的请求,以防止进一步访问。特别是在需要大量数据爬取的场景中,能够更改用户代理以模拟不同用户是至关重要的。这可以显著提高您的爬取成功率。

在Google Chrome Selenium中更改用户代理

如果您尚未在本地安装selenium库,可以使用以下命令进行安装:

复制代码
pip install selenium

导入库:

python 复制代码
from selenium import webdriver

然后初始化一个Chrome选项对象并设置自定义用户代理:

python 复制代码
custom_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--user-agent={custom_user_agent}')

接下来,创建一个新的ChromeDriver实例并访问目标网站:

python 复制代码
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://httpbin.org/user-agent")

HTTPBin 是一个网页请求调试服务,它会显示请求的用户代理。如果代码正确,您应该看到自定义用户代理的显示,如下图所示:

在上述代码中,custom_user_agent 的值是静态的。如果您希望每次打开浏览器时使用不同的用户代理,可以手动收集各种用户代理字符串并将其编译成列表,然后每次随机选择一个值。或者,您可以使用 fake-useragent 库,它提供了一种简单的方法来实时生成随机用户代理字符串。使用以下命令安装该库:

复制代码
pip install fake-useragent

使用 fake-useragent 非常简单:

python 复制代码
from fake_useragent import UserAgent
ua = UserAgent()

# 获取随机浏览器用户代理字符串
print(ua.random)

# 或者获取特定浏览器的用户代理字符串
print(ua.chrome)
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
print(ua.firefox)
# Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
print(ua.safari)
# Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.2 Safari/605.1.15

当与Selenium结合使用时,完整的代码如下:

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)
driver.get("https://httpbin.org/user-agent")

time.sleep(10)
driver.quit()

此设置允许我们随机化Selenium驱动的Google Chrome使用的用户代理。

在Firefox Selenium中更改用户代理

Selenium不仅可以驱动Google Chrome,还可以驱动Firefox。唯一不同的是将 webdriver.ChromeOptions() 替换为 webdriver.FirefoxOptions()。以下是完整代码:

python 复制代码
import time
from selenium import webdriver
from fake_useragent import UserAgent

ua = UserAgent()
firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument(f'--user-agent={ua.random}')

driver = webdriver.Firefox(options=firefox_options)
driver.get("https://httpbin.org/user-agent")

time.sleep(10)
driver.quit()

您可以看到网页上的用户代理已成功更改:

更顺畅访问网站的最佳实践

更改用户代理的目的是防止目标网站阻止我们的访问。基于用户代理的阻止只是反爬虫和反机器人措施之一。更常见的是,网站会设置验证码(如reCAPTCHA等)来过滤机器人。这些挑战通常较为复杂,会显著阻碍网站访问。

使用 Capsolver 服务可以帮助您解决验证码挑战。如果您在向目标网站发送API请求时遇到验证码挑战,可以使用Capsolver的 任务API,该API可以解决各种挑战并返回正确的令牌给您。

如果您使用Selenium等自动化工具,可以将Capsolver的扩展无缝集成到Chrome和Firefox等浏览器中。这种集成可以增强您的能力,并提供更顺畅的网站访问体验。

结论

通过本文,您可以掌握Selenium中用户代理自定义的技巧。这不仅有助于提高网络爬虫的隐蔽性和可靠性,还能确保与不同网站的顺畅交互。无论是通过验证码挑战还是模拟用户行为,有策略地调整用户代理都可以成为关键。请记住,借助 CapSolver 等工具,克服网页数据访问的障碍不仅可行,而且高效。在当今动态的数字环境中,采用这些实践可以显著提高自动化项目的效率,并最大化网络爬虫的效益!

常见问题

1. 为什么在使用Selenium时需要更改用户代理?

更改用户代理可以让您的Selenium脚本看起来像一个真实的浏览器,而不是自动化工具。许多网站通过检查默认用户代理来检测自动化,并可能显示错误、限制请求或触发验证码。自定义用户代理可以提高隐蔽性并减少被阻止的可能性。


2. 是否可以在Selenium中自动轮换用户代理?

是的。您可以创建一个包含不同用户代理的列表,并为每个会话随机选择一个,或者使用 fake-useragent 等库自动生成随机的浏览器身份。在大规模爬虫任务中,轮换用户代理尤其有用。


3. 仅更改用户代理是否能完全防止被阻止?

不能完全防止。用户代理修改只是避免机器人检测的一部分。网站还会跟踪Cookie、IP信誉、请求速度、行为,并可能显示验证码挑战。将Selenium与验证码解决服务如 CapSolver 结合使用,可以帮助保持顺畅访问。


4. 如何检查Selenium中的用户代理更改是否生效?

在启动驱动后,您可以访问 https://httpbin.org/user-agent 等调试网站。该页面将显示Selenium浏览器当前使用的用户代理——如果您的自定义值出现,说明配置成功。


5. 是否可以在Firefox中更改用户代理,而不仅仅是Chrome?

是的。对于Chrome,您使用 webdriver.ChromeOptions(),对于Firefox使用 webdriver.FirefoxOptions()。将用户代理参数添加到选项对象中,然后在初始化WebDriver时传递它。


6. 即使更改了用户代理,网站仍然显示验证码怎么办?

这是常见的情况——现代网站依赖的不仅仅是用户代理检测。如果验证码频繁出现,您可以通过API或浏览器扩展集成 CapSolver 来自动解决它们,从而提高自动化流程并避免中断。

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多