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

C# HttpClient请求Investing.com经济日历遇403禁止访问求助

解决403 Forbidden问题的方案

1. 添加浏览器请求头伪装

网站会通过请求头标识识别非浏览器请求,默认HttpClient的标识容易被拦截,先给请求添加模拟浏览器的请求头:

using System;
using System.Net.Http;
using System.Net.Http.Headers;

namespace ConsoleApp3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            using (var client = new HttpClient())
            {
                // 模拟Chrome浏览器的请求头
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36");
                client.DefaultRequestHeaders.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8");
                client.DefaultRequestHeaders.AcceptLanguage.ParseAdd("zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
                client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
                client.DefaultRequestHeaders.Add("Connection", "keep-alive");
                client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");

                var endpoint = new Uri("https://www.investing.com/economic-calendar/");
                var result = client.GetAsync(endpoint).Result;
                var content = result.Content.ReadAsStringAsync().Result;
                Console.WriteLine(content);
            }
        }
    }
}

2. 处理Cloudflare JS验证挑战

如果上述方法仍返回403,说明网站启用了Cloudflare的人机验证(从返回HTML中的__CF$cv$params和JS脚本可判断),此时需要用能执行JavaScript的工具绕过验证,推荐使用PuppeteerSharp:

操作步骤:

  1. 通过NuGet安装PuppeteerSharp:Install-Package PuppeteerSharp
  2. 使用以下代码:
using System;
using System.Threading.Tasks;
using PuppeteerSharp;

namespace ConsoleApp3
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            // 首次运行自动下载Chrome内核,后续可注释该行
            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);

            using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = true, // 设为false可显示浏览器窗口调试
                Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
            }))
            using (var page = await browser.NewPageAsync())
            {
                // 设置浏览器标识
                await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36");
                
                // 导航到目标页面,等待网络请求稳定
                await page.GoToAsync("https://www.investing.com/economic-calendar/", new NavigationOptions
                {
                    WaitUntil = new[] { WaitUntilNavigation.Networkidle2 }
                });

                // 获取完整页面源码
                var content = await page.GetContentAsync();
                Console.WriteLine(content);
            }
        }
    }
}

注意事项

  • 频繁请求易触发拦截,建议添加请求间隔,避免被判定为爬虫
  • 严格遵守网站的使用条款与robots.txt规则,禁止过度爬取

内容的提问来源于stack exchange,提问作者Николай Борисов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:08:25