如何在Selenium中无需扩展修改Chrome的User Agent客户端提示头?
你想要的修改效果完全可以实现,不需要借助浏览器扩展,但无法直接照搬修改普通User-Agent的add_argument("user-agent=" + xxx)的写法,有两种可行方案:
方案1:使用Chrome原生命令行参数直接配置
Chrome 89及以上版本提供了专门的启动参数,直接指定UA客户端提示的取值,直接加到启动配置里即可,示例如下:
from selenium.webdriver.chrome.options import Options chrome_options = Options() # 修改Sec-CH-UA-Platform,比如要模拟Windows就填"Windows",模拟macOS填"macOS" chrome_options.add_argument('--ua-platform="macOS"') # 修改Sec-CH-UA,注意格式是多组品牌+版本用逗号分隔,每组都要加双引号 chrome_options.add_argument('--ua-brand-version-list="Google Chrome";v="119", "Chromium";v="119", "Not=A?Brand";v="24"') # 修改Sec-CH-UA-Mobile,?0代表非移动设备,?1代表移动设备 chrome_options.add_argument('--ua-mobile=?0') # 修改Sec-CH-UA-Platform-Version,比如对应macOS 14.1就填"14.1" chrome_options.add_argument('--ua-platform-version="14.1"')
这种方式的优点是配置简单,和你之前修改普通UA的逻辑一致,直接加启动参数即可。
方案2:通过Chrome DevTools Protocol(CDP)动态设置请求头
如果需要修改的客户端提示头没有对应启动参数,或者需要在脚本运行过程中动态修改取值,可以调用Selenium内置的CDP接口覆盖请求头,示例如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 此处可以保留你原来的普通UA修改逻辑 USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" chrome_options.add_argument(f"user-agent={USER_AGENT}") driver = webdriver.Chrome(options=chrome_options) # 调用CDP接口设置额外HTTP头 driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", { "headers": { "Sec-CH-UA-Platform": "macOS", "Sec-CH-UA": '"Google Chrome";v="119", "Chromium";v="119", "Not=A?Brand";v="24"', "Sec-CH-UA-Mobile": "?0", "Sec-CH-UA-Platform-Version": "14.1" } })
注意这种方式需要先启动driver再执行配置,所有后续发起的请求都会携带你设置的自定义头。
内容的提问来源于stack exchange,提问作者agile-keyboard
相关产品推荐
相关产品推荐

