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

Selenium C#访问NSEIndia接口出现‘资源未找到’错误求助

问题解决:Selenium C#访问NSE API出现"Resource not found"

核心原因分析

NSE的API接口带有反爬检测机制,仅设置Referrer不足以通过验证,主要检测点包括:

  • 请求的User-Agent是否为真实浏览器标识(Selenium默认UA含自动化特征)
  • 是否存在有效的会话Cookie(直接访问API未建立网站会话)
  • 页面的navigator.webdriver属性暴露了Selenium自动化身份

修改后的C#代码实现

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools.Network;
using System.Collections.Generic;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        ChromeOptions options = new ChromeOptions();
        options.AddArguments("--start-maximized");
        
        // 排除自动化相关开关与扩展
        options.AddExcludedArguments(new List<string> { "enable-automation" });
        options.AddAdditionalOption("useAutomationExtension", false);
        
        // 设置真实浏览器的User-Agent
        string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36";
        options.AddArgument($"--user-agent={userAgent}");
        
        // 设置Referrer
        options.AddAdditionalOption("chrome.page.customHeaders.referrer", "https://www.nseindia.com");

        using (var driver = new ChromeDriver(options))
        {
            // 通过Chrome DevTools Protocol隐藏webdriver标识
            var devTools = driver.CreateDevToolsSession();
            devTools.Network.SetUserAgentOverride(new SetUserAgentOverrideCommandSettings
            {
                UserAgent = userAgent
            });
            devTools.ExecuteDevToolsCommand("Page.addScriptToEvaluateOnNewDocument", new Dictionary<string, object>
            {
                ["source"] = @"
                    Object.defineProperty(navigator, 'webdriver', {
                        get: () => undefined
                    });
                "
            });

            // 先访问NSE主页建立会话,获取必要Cookie
            driver.Navigate().GoToUrl("https://www.nseindia.com");
            // 等待页面加载完成(推荐用WebDriverWait替代Thread.Sleep)
            Thread.Sleep(3000);

            // 再请求API接口
            driver.Navigate().GoToUrl("https://www.nseindia.com/api/ipo-bid-details?symbol=DREAMFOLKS&series=EQ");
        }
    }
}

关键修改说明

  • 添加真实User-Agent:模拟普通Chrome浏览器的请求标识,避免被反爬规则拦截
  • 隐藏webdriver属性:通过CDP在页面加载前注入脚本,将navigator.webdriver设为undefined,绕过自动化检测
  • 先访问主页建立会话:NSE的API需要验证网站会话,先访问主页可获取有效Cookie,确保API请求被认可
  • 完善自动化特征隐藏:同时排除enable-automation开关并禁用自动化扩展,进一步减少暴露风险

内容的提问来源于stack exchange,提问作者Mr. K.D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:36:13