You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux下如何通过curl指定api.binance.com的自定义近邻IP访问以降低延迟并避免错误

Linux下如何通过curl指定api.binance.com的自定义近邻IP访问以降低延迟并避免错误

你遇到的问题本质是CloudFront(Binance用的CDN)的分发规则限制:直接访问IP时,请求没有携带正确的api.binance.com Host头,导致CDN无法识别对应的服务;同时SSL证书是绑定域名而非IP的,所以直接用IP走HTTPS会触发证书验证失败。下面给你两个实用的解决方法:

方法一:用curl的--resolve参数临时指定(推荐,无需修改系统配置)

这个参数可以让curl绕过DNS查询,直接把指定域名的某个端口请求解析到你找到的近邻IP,同时请求时会自动带上正确的Host头,SSL验证也会用域名来匹配证书,完美解决两个错误问题。

测试延迟的命令:

curl -o /dev/null -s -w 'Total: %{time_total}s\n' --resolve api.binance.com:443:18.238.65.94 "https://api.binance.com/api/v3/time"

获取接口内容的命令:

curl --resolve api.binance.com:443:18.238.65.94 "https://api.binance.com/api/v3/time"

参数格式说明:--resolve 域名:端口:目标IP,这里我们指定443端口(HTTPS默认端口),curl就会把api.binance.com:443的请求全部发往18.238.65.94,同时保持域名相关的请求头和SSL验证逻辑正常。

方法二:修改本地hosts文件永久生效(对所有应用生效)

如果希望所有访问api.binance.com的工具(不止curl)都使用这个近邻IP,可以修改系统的hosts文件,强制域名解析到指定IP:

  1. 编辑hosts文件:
sudo nano /etc/hosts
  1. 在文件末尾添加一行:
18.238.65.94  api.binance.com
  1. 保存退出(nano里按Ctrl+O保存,Ctrl+X退出)

之后不管是curl还是其他程序访问api.binance.com,都会直接使用18.238.65.94这个IP,同时请求时的Host头和SSL验证都不会有问题,延迟也能保持在低水平。

补充说明为什么之前直接访问IP会报错

  • HTTP请求返回403:CloudFront需要请求携带正确的Host头来匹配对应的分发规则,直接用IP请求时Host头是IP本身,CDN无法识别,所以拒绝访问。
  • HTTPS请求证书错误:Binance的SSL证书是颁发给*.binance.com域名的,不是颁发给IP的,curl验证证书时发现目标IP和证书绑定的域名不匹配,所以触发安全报错。

备注:内容来源于stack exchange,提问作者sirjay

火山引擎 最新活动