You need to enable JavaScript to run this app. Selenium webdriver不关闭浏览器前提下修改user-agent的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Selenium webdriver不关闭浏览器前提下修改user-agent的实现方法

实现方案

你需求的效果完全可以实现,无需重启浏览器实例,有两种常用方案:

方案1:通过修改Firefox内置配置实现(兼容所有Selenium版本)

通过访问Firefox的配置页直接修改UA偏好,修改后新标签页自动生效,示例代码如下:

from selenium import webdriver

# 原有初始化逻辑
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever")
driver = webdriver.Firefox(profile)

# 需要修改UA时执行以下逻辑
new_user_agent = "替换为你需要的新UA字符串"
# 打开配置页
driver.get("about:config")
# 确认风险提示
driver.find_element("id", "warningButton").click()
# 执行JS修改UA配置
driver.execute_script(f"""
    const prefService = Components.classes["@mozilla.org/preferences-service;1"]
                        .getService(Components.interfaces.nsIPrefBranch);
    prefService.setCharPref("general.useragent.override", "{new_user_agent}");
""")

# 之后打开的新标签页自动使用新UA
driver.execute_script("window.open('');")

方案2:Selenium4+ 调用CDP协议实现(更简便稳定)

Selenium4及以上版本支持调用Firefox的Chrome DevTools协议接口,直接修改UA无需跳转配置页,示例代码如下:

from selenium import webdriver

# 原有初始化逻辑
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever")
driver = webdriver.Firefox(profile)

# 需要修改UA时直接执行
new_user_agent = "替换为你需要的新UA字符串"
driver.execute_cdp_cmd("Network.setUserAgentOverride", {
    "userAgent": new_user_agent
})

# 之后打开的新标签页自动使用新UA
driver.execute_script("window.open('');")
注意事项
  • 优先推荐使用方案2,无需跳转配置页,操作更稳定,仅需保证Selenium版本≥4.0、Firefox版本≥86即可
  • 修改UA仅对后续新发起的请求、新打开的标签页生效,已加载完成的旧页面不会更新UA
  • 需要恢复默认UA时,方案1可执行JS调用prefService.clearUserPref("general.useragent.override")清空配置,方案2重新调用CDP接口传入浏览器默认UA即可

内容的提问来源于stack exchange,提问作者zizou growler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 08:54:06