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

Selenium4+C#修改Chrome的sec-ch-ua-platform等参数失败求助

解决Selenium4 C#修改Chrome客户端提示参数(sec-ch-ua/sec-ch-ua-platform)无效的问题

问题说明

在为流量机器人开发基于Selenium4的C#代码时,尝试修改Chrome的sec-ch-ua-platform、sec-ch-ua等User-Agent客户端提示参数,但修改始终未生效。参考Stack Overflow上的Python解决方案转成C#代码后仍无法解决,以下是两段无效的尝试代码。

无效尝试代码

尝试代码1

string Url = "https://whatismyipaddress.com/";
ChromeOptions ChromeOptions = new ChromeOptions();

ChromeOptions.AddArgument("ignore-certificate-errors"); 
ChromeOptions.AddArgument("--sec-ch-ua-platform=Android");
ChromeOptions.AddArgument("--sec-ch-ua-mobile=?1");
ChromeOptions.AddArgument("--sec-ch-ua=Chromium\";; v = \"110\", \"Not A(Brand\";; v = \"23\", \"Google Chrome\";; v = \"109");
ChromeOptions.AddArgument("--user-agent=Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19");
/// disable image
ChromeOptions.AddArguments("--disable-images");
ChromeOptions.AddArguments("--start-maximized");

ChromeOptions.AddUserProfilePreference("profile.default_content_setting_values.images", 2);

//MainMenu code
driver = new ChromeDriver(ChromeOptions);
driver.Navigate().GoToUrl(Url);

尝试代码2

string sec_ch_ua = "\"Examplary Browser\"; v=\"73\", \";Not?A.Brand\"; v=\"27\"";

ChromeOptions options = new ChromeOptions();
options.AddArgument($"--sec-ch-ua={sec_ch_ua}");
//ChromeOptions.AddArgument("--sec-ch-ua-platform=Android");
//ChromeOptions.AddArgument("--user-agent-platform=Android");

有效解决方案

Chrome的sec-ch-ua系列参数属于User-Agent Client Hints,无法通过Chrome启动参数直接覆盖,必须借助Chrome DevTools Protocol(CDP)的Emulation.setUserAgentOverride命令来设置,该命令会同步更新user-agent字符串及对应的客户端提示元数据,确保参数生效。

完整有效代码

string url = "https://whatismyipaddress.com/";
ChromeOptions options = new ChromeOptions();
options.AddArgument("ignore-certificate-errors");
options.AddArgument("--disable-images");
options.AddArgument("--start-maximized");
options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);

// 初始化Chrome驱动
var driver = new ChromeDriver(options);
// 创建DevTools会话
var devToolsSession = driver.CreateDevToolsSession();

// 定义需要设置的参数
var targetUserAgent = "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19";
var targetPlatform = "Android";

// 使用CDP命令覆盖User-Agent及客户端提示元数据
devToolsSession.SendCommand("Emulation.setUserAgentOverride", new Dictionary<string, object>
{
    ["userAgent"] = targetUserAgent,
    ["platform"] = targetPlatform,
    ["userAgentMetadata"] = new Dictionary<string, object>
    {
        ["brands"] = new[]
        {
            new { brand = "Chromium", version = "110" },
            new { brand = "Not A(Brand", version = "23" },
            new { brand = "Google Chrome", version = "109" }
        },
        ["platform"] = targetPlatform,
        ["mobile"] = true // 对应sec-ch-ua-mobile=?1
    }
});

// 导航到目标页面
driver.Navigate().GoToUrl(url);

关键说明

  1. CDP命令优先级更高:Emulation.setUserAgentOverride会直接修改Chrome的User-Agent相关配置,覆盖浏览器默认生成的sec-ch-ua、sec-ch-ua-platform、sec-ch-ua-mobile等参数。
  2. 参数同步性:通过userAgentMetadata传入品牌信息、平台和移动端标识,Chrome会自动生成符合规范的sec-ch-ua系列请求头,无需手动拼接格式复杂的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:02:02