You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Selenium中修改Worker.navigator等属性模拟Windows系统

解决Linux下Selenium模拟Windows Chrome环境的完整方案

要让Chrome完全伪装成Windows环境,除了你已修改的User-Agent和navigator.platform,还需要覆盖Worker上下文的平台属性,以及补充其他关键系统标识:

1. 覆盖WorkerNavigator.platform

Worker运行在独立的脚本上下文,需单独修改其platform属性,可通过同一段注入脚本同时处理主上下文和Worker上下文:

driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': """
    // 主上下文的navigator.platform
    Object.defineProperty(navigator, 'platform', {get: () => 'Win32'});
    // Worker上下文的WorkerNavigator.platform
    Object.defineProperty(WorkerNavigator.prototype, 'platform', {get: () => 'Win32'});
    """
})

2. 补充修改其他平台相关属性

这些属性也是网站判断系统环境的常见依据,需一并覆盖:

driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': """
    // 模拟Windows的CPU标识
    Object.defineProperty(navigator, 'oscpu', {get: () => 'Windows NT 10.0; Win64; x64'});
    // 模拟Windows的应用版本字符串
    Object.defineProperty(navigator, 'appVersion', {get: () => '5.0 (Windows NT 10.0; Win64; x64)'});
    // 确保userAgent在脚本中也被覆盖(避免页面直接读取原始值)
    Object.defineProperty(navigator, 'userAgent', {get: () => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'});
    """
})

3. 初始化阶段确保UA设置生效

在启动Chrome时,通过ChromeOptions直接设置User-Agent,形成双重保障:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')
driver = webdriver.Chrome(options=options)

可选:增强逼真度(非必需)

部分网站会通过硬件相关属性辅助判断,可按需调整为Windows常见值:

// 模拟8核CPU
Object.defineProperty(navigator, 'hardwareConcurrency', {get: () => 8});
// 模拟8GB内存
Object.defineProperty(navigator, 'deviceMemory', {get: () => 8});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:23:00