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

使用RestSharp请求c-cex.com接口返回403 Forbidden问题求助

解决c-cex API请求403 Forbidden问题的思路

我来帮你梳理下这个403问题的排查方向,之前也碰到过类似的API拦截坑,一步步来:


1. 完整复刻浏览器的请求头组合

浏览器能正常请求,说明它带的请求头组合是符合网站验证规则的。你只加了User-Agent、no-cache远远不够,建议按以下步骤操作:

  • 打开浏览器F12的「Network」面板,刷新prices.json请求
  • 复制该请求的所有请求头(包括Accept、Accept-Encoding、Accept-Language、Cookie、Referer这些容易忽略的项)
  • 在代码里把这些请求头全部加上,不要遗漏

示例代码(RestSharp版本):

Dim url As String = "https://c-cex.com/t/prices.json"
Dim client As New RestSharp.RestClient(url)
Dim request = New RestRequest(Method.GET)

// 完全复制浏览器里的请求头,以下是示例,替换成你实际抓包的内容
request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
request.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8")
request.AddHeader("Accept-Encoding", "gzip, deflate, br")
request.AddHeader("Accept-Language", "zh-CN,zh;q=0.9")
request.AddHeader("Cookie", "复制浏览器里的Cookie值")
request.AddHeader("Referer", "https://c-cex.com/")
request.AddHeader("Cache-Control", "no-cache")

Dim response = client.Execute(request)

2. 检查Cookie的必要性

很多网站会通过会话Cookie验证请求的合法性,直接请求API端点会被判定为非浏览器发起的请求。你可以:

  • 先请求c-cex的首页,获取响应中的Cookie,再带着这个Cookie去请求prices.json
  • 或者直接复制浏览器当前会话的Cookie值(抓包时能看到),加到请求头里

3. 验证apisign签名的正确性

你尝试的签名请求可能存在规则不匹配的问题,建议对照c-cex的官方API文档确认:

  • 签名的生成目标是否正确:有些交易所要求对排序后的参数字符串签名,而非整个URL
  • 编码格式是否正确:很多API要求用UTF-8而非ASCII编码字符串,你当前用的UnicodeEncoding.ASCII可能导致签名无效
  • 请求方式是否正确:部分需要签名的API要求用POST而非GET提交参数

比如调整编码后的签名生成示例:

Dim nonce As String = CInt((DateTime.UtcNow - New DateTime(1970, 1, 1)).TotalSeconds).ToString
Dim paramStr As String = $"a=getbalance&currency=BTC&apikey={API_KEY}&nonce={nonce}"
' 用UTF-8编码而非ASCII
Dim keyBytes() = Encoding.UTF8.GetBytes(API_SECRET)
Dim hs As New System.Security.Cryptography.HMACSHA512(keyBytes)
Dim paramBytes() = Encoding.UTF8.GetBytes(paramStr)
Dim hashBytes() = hs.ComputeHash(paramBytes)
Dim apiSign = ToHexString(hashBytes) ' 确保ToHexString是正确的十六进制转换实现

4. 对比抓包差异

如果以上方法都不行,用Fiddler或者浏览器的Network面板,同时抓浏览器的正常请求和你代码的请求,对比:

  • 请求头的每一项是否完全一致
  • URL参数是否有差异
  • 是否存在浏览器自动携带的隐形参数(比如JS生成的token)

内容的提问来源于stack exchange,提问作者Bruno Leite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:12:32