未修改任何配置时curl/wget请求失效但相同URL浏览器可正常访问
问题根因排查
- 首先核对参数一致性:你浏览器测试使用的请求地址中钱包地址为
0x3f349bBaFEc1551819B8be1EfEA2fC46cA749aA1,curl/wget使用的钱包地址为0x61aE35Be08ea92f9263cDbA2Af0dBC1d4861d652,请先替换为同一参数排除测试误差。 - 反爬策略拦截:Bscscan采用Cloudflare做安全防护,近期升级了爬虫识别规则,curl/wget默认的请求头会被识别为非浏览器请求,错误提示会误报为
Invalid API Key,这是最常见的诱因。 - IP限流/封禁:如果你的出口IP短期内请求量超出Bscscan接口限制(免费版为每秒5次),会触发临时IP封禁,同样会返回该错误。
- APIKey配额耗尽/冻结:可登录Bscscan后台确认对应APIKey状态正常、未超出当日请求配额。
解决方案
方案1:添加标准浏览器请求头
给curl/wget补充模拟浏览器的User-Agent等请求头即可绕过基础反爬校验,示例命令如下:
curl示例
curl -X GET \ --header 'Accept: application/json' \ --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' \ "https://api.bscscan.com/api?module=account&action=balance&address=0x61aE35Be08ea92f9263cDbA2Af0dBC1d4861d652&apikey=DJD6AQYBZTP197BBYKR5G4DDRH4YMQZKSX"
wget示例
wget --timeout=15 \ --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" \ -O - -o /dev/null \ "https://api.bscscan.com/api?module=account&action=balance&address=0x61aE35Be08ea92f9263cDbA2Af0dBC1d4861d652&apikey=DJD6AQYBZTP197BBYKR5G4DDRH4YMQZKSX"
方案2:IP封禁处理
若添加请求头后仍然报错,可更换出口IP重试,若更换后恢复正常即说明原有IP被临时封禁,通常24小时后会自动解封,日常使用控制请求频率不超过官方限制即可避免触发封禁。
方案3:APIKey状态校验
登录Bscscan开发者后台,确认对应APIKey未被冻结、未超出单日请求配额,若配额耗尽可升级付费版或等待次日配额重置。
内容的提问来源于stack exchange,提问作者chiwal
相关产品推荐
相关产品推荐

