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

Selenium Firefox驱动无法设置dom.webdriver.enabled为false问题求助

问题原因
  • 配置执行顺序错误:你先将未修改偏好的FirefoxProfile实例赋值给了FirefoxOptions,之后才调用SetPreference修改配置,此时的修改不会同步到已经赋值给options的profile副本中,修改未生效。
  • 高版本Firefox/GeckoDriver的额外限制:仅设置dom.webdriver.enabled不足以覆盖所有自动化标识,部分版本的GeckoDriver会强制将navigator.webdriver重置为true,需要额外添加屏蔽配置。
修复方案

首先调整配置执行顺序,完成所有FirefoxProfile偏好设置后再将其赋值给FirefoxOptions,同时补充反检测相关的偏好和启动参数,示例代码如下:

CodePagesEncodingProvider.Instance.GetEncoding(437);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// 初始化Profile
FirefoxProfile firefoxProfile = new FirefoxProfile(@"C:\Users\klwid\AppData\Roaming\Mozilla\Firefox\Profiles\i611dw79.selenium");
// 配置所有偏好项
firefoxProfile.SetPreference("dom.webdriver.enabled", false);
firefoxProfile.SetPreference("useAutomationExtension", false);
firefoxProfile.SetPreference("dom.webdriver.open.denied", true);
firefoxProfile.SetPreference("general.platform.override", "Win32");
// 配置完成后再绑定到Options
FirefoxOptions options = new FirefoxOptions() { Profile = firefoxProfile };
// 额外添加启动参数屏蔽自动化标记
options.AddArgument("--disable-blink-features=AutomationControlled");
// 初始化驱动
driver = new FirefoxDriver(options);

如果调整配置后navigator.webdriver仍返回true,可以通过CDP命令强制覆盖该属性的返回值,示例代码如下:

using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V120.Page;

// 驱动初始化完成后执行
IDevTools devTools = driver as IDevTools;
DevToolsSession devToolsSession = devTools.GetDevToolsSession();
devToolsSession.Domains.Page.AddScriptToEvaluateOnNewDocument(new AddScriptToEvaluateOnNewDocumentCommandSettings
{
    Source = "Object.defineProperty(navigator, 'webdriver', { get: () => undefined })"
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:27:06