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

调用API遭Cloudflare拦截,如何用VB.NET/C#模拟Chrome请求?

问题

我希望从服务器加载JSON内容,请求URL为:https://www.astrobin.com/api/v2/equipment/camera/?format=json。在Google Chrome浏览器中发起该请求可正常获取结果并完成解析;但使用VB.NET(代码如下)或C#执行相同请求时,会被Cloudflare拦截。请问是否有办法模拟Chrome的请求方式来执行查询?

我使用的VB.NET代码:

Using MyHTTPClient As New System.Net.Http.HttpClient
   Dim request As System.Net.Http.HttpRequestMessage = New System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, URL)
   response = MyHTTPClient.Send(request)
   responsereader = New System.IO.StreamReader(response.Content.ReadAsStream())
   Answer = responsereader.ReadToEnd
End Using
解决方案

Cloudflare拦截请求的核心原因是代码发送的请求头和Chrome浏览器差异过大,被识别为非人类请求。你需要模拟Chrome的关键请求头,最核心的是User-Agent,补充其他常见头还能进一步提升请求真实性。

  • 先获取Chrome当前的User-Agent:打开Chrome,地址栏输入chrome://version/,复制页面中的User-Agent字符串。
  • 修改代码,给请求添加必要的请求头:

修改后的VB.NET代码示例:

Using MyHTTPClient As New System.Net.Http.HttpClient
    ' 模拟Chrome的核心请求头
    MyHTTPClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36")
    MyHTTPClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8")
    MyHTTPClient.DefaultRequestHeaders.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
    MyHTTPClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br")
    MyHTTPClient.DefaultRequestHeaders.Add("Connection", "keep-alive")
    MyHTTPClient.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1")

    Dim request As New System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, "https://www.astrobin.com/api/v2/equipment/camera/?format=json")
    Dim response = MyHTTPClient.Send(request)
    response.EnsureSuccessStatusCode() ' 确保请求返回成功状态
    Using responsereader As New System.IO.StreamReader(response.Content.ReadAsStream())
        Dim Answer = responsereader.ReadToEnd
        ' 此处处理返回的JSON内容
    End Using
End Using

注意事项:

  • User-Agent要和你当前Chrome的版本保持一致,避免使用过时的字符串。
  • 如果仍被拦截,可能需要处理Cloudflare的Cookie验证,这时可以考虑用Selenium这类带浏览器内核的库直接操控Chrome发起请求,但这种方式效率较低,适合小批量请求。
  • 不要频繁发送请求,避免触发Cloudflare的频率限制。

内容的提问来源于stack exchange,提问作者Martin Weiß

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:32:29