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

如何在C# Selenium Chrome中配置UserAgentMetadata修改请求头

解决方案

你不能直接将UserAgentMetadata作为命令行参数传入ChromeOptions,需要通过Chrome DevTools协议(CDP)的Emulation.setUserAgentOverride命令来完成设置。以下是修正后的完整代码:

using System;
using System.IO;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V109.Emulation;

namespace web_traffic
{
    internal class DevTraffic
    {
        ChromeDriver driver;
        string path = Directory.GetParent(Environment.CurrentDirectory).Parent.Parent.FullName;

        public void SetUserMeta()
        {
            string url = "https://whatismyipaddress.com/";
            ChromeOptions chromeOptions = new ChromeOptions();
            
            // 初始化Chrome驱动
            driver = new ChromeDriver(chromeOptions);
            
            // 获取DevTools会话(版本需与Chrome浏览器版本匹配,这里用V109)
            var devTools = driver.CreateDevToolsSession();
            var emulationDomain = devTools.GetVersionSpecificDomains<V109.DevToolsSessionDomains>().Emulation;

            // 构建UserAgentMetadata
            var agentMetadata = new UserAgentMetadata
            {
                Mobile = true,
                Platform = "Android",
                Architecture = "x86",
                Model = "SM-G973F", // 可选,补充设备型号
                PlatformVersion = "10" // 可选,补充系统版本
            };

            // 构建UA覆盖设置,需搭配匹配的UserAgent字符串
            var userAgentOverrideSettings = new SetUserAgentOverrideCommandSettings
            {
                UserAgent = "Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Mobile Safari/537.36",
                UserAgentMetadata = agentMetadata
            };

            // 发送CDP命令设置UA及Metadata
            emulationDomain.SetUserAgentOverride(userAgentOverrideSettings);

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

关键说明:

  • DevTools版本匹配:确保引用的OpenQA.Selenium.DevTools.V109版本与你使用的Chrome浏览器版本一致,否则会出现兼容性问题。
  • UserAgent字符串匹配:设置UserAgentMetadata时,需要搭配对应的真实UserAgent字符串,否则可能导致网站识别异常。
  • DevTools会话初始化:必须在驱动实例创建后,再初始化DevTools会话并发送命令。

内容的提问来源于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 06:30:11