使用undetected-chromedriver无法修改User-Agent的问题求助
问题描述
使用undetected-chromedriver时无法修改User-Agent,普通Selenium环境下修改则可以正常生效,相关代码如下:
from selenium import webdriver import time import undetected_chromedriver as uc # 自定义User-Agent字符串 user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" # 配置Chrome选项 chrome_options = uc.ChromeOptions() chrome_options.headless = False chrome_options.add_argument(f"user-agent={user_agent}") # 初始化WebDriver driver = uc.Chrome(options=chrome_options) # 打开指纹检测页面验证 driver.get("https://amiunique.org/fingerprint") time.sleep(40)
解决思路
- 改用实验性选项+Capabilities双重指定:undetected-chromedriver可能会覆盖常规的
user-agent参数,通过实验性选项屏蔽自动化标识,同时在Capabilities中再次指定:chrome_options = uc.ChromeOptions() chrome_options.headless = False # 屏蔽自动化特征 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option('useAutomationExtension', False) # 添加User-Agent参数 chrome_options.add_argument(f"user-agent={user_agent}") # 初始化时通过desired_capabilities再次传入 driver = uc.Chrome( options=chrome_options, desired_capabilities={ 'browserName': 'chrome', 'goog:chromeOptions': {'args': [f"user-agent={user_agent}"]} } ) - 通过Chrome DevTools Protocol动态修改:绕过undetected-chromedriver的参数拦截,直接调用CDP命令设置User-Agent:
chrome_options = uc.ChromeOptions() chrome_options.headless = False driver = uc.Chrome(options=chrome_options) # 初始化后立即设置User-Agent driver.execute_cdp_cmd( 'Network.setUserAgentOverride', {"userAgent": user_agent} ) driver.get("https://amiunique.org/fingerprint") time.sleep(40) - 升级undetected-chromedriver版本:部分旧版本存在User-Agent被重置的bug,执行升级命令后重试:
pip install --upgrade undetected-chromedriver - 检查默认行为冲突:确认是否开启了headless模式(部分版本会自动为headless设置特定User-Agent),或者是否有其他代码逻辑覆盖了User-Agent参数,显式关闭不必要的默认配置。
内容的提问来源于stack exchange,提问作者Bers Ahmad
相关产品推荐
相关产品推荐

