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

无法通过URL获取目标页面HTML代码,求非Selenium解决方案

问题:HttpClient请求目标页面超时,寻求非Selenium的解决方案

我需要获取页面https://bakerhughesrigcount.gcs-web.com/intl-rig-count的HTML代码,使用HttpClient请求时始终处理超时,推测该网站存在反机器人防护机制。我已添加User-Agent和Accept请求头模拟正常浏览器请求,但问题仍未解决。相关C#代码如下:

string url = "https://bakerhughesrigcount.gcs-web.com/intl-rig-count";

using (HttpClient client = new HttpClient())
{
    try
    {
        client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36");
        client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");

        HttpResponseMessage response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();

        string htmlContent = await response.Content.ReadAsStringAsync();
        Console.WriteLine(htmlContent);
    }
    catch (HttpRequestException e)
    {
        Console.WriteLine($"Error: {e.Message}");
    }
}

我使用Selenium成功获取了该页面的HTML代码,但希望找到无需此类工具的实现方法。


可行的解决方向:

  • 补充完整浏览器请求头:除已添加的头信息外,浏览器通常还会发送Accept-Language、Accept-Encoding、Connection等字段,模拟完整请求头集合,示例代码补充:
    client.DefaultRequestHeaders.Add("Accept-Language", "zh-CN,zh;q=0.9");
    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
    client.DefaultRequestHeaders.Add("Connection", "keep-alive");
    
  • 确认重定向逻辑:HttpClient默认允许自动重定向,但部分网站可能存在多层重定向或特定重定向规则,确保请求能正常跟随重定向完成。
  • 模拟人类访问节奏:在请求前添加随机延迟(比如1-3秒),避免因请求频率过高触发反爬机制。
  • 更换请求IP:若当前IP已被网站拦截,使用代理IP切换请求来源,绕过IP级别的限制。
  • 直接请求数据接口:打开浏览器开发者工具的Network面板,监控页面加载时的XHR/Fetch请求,找到返回页面核心数据的API接口,直接请求这些接口获取数据,这种方式通常比爬取HTML更易绕过反爬。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:23