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

NodeJS后端调用Solscan API遇429错误,前端正常的问题排查

NodeJS后端调用Solscan API返回429错误,前端却正常的问题排查与解决

我在NodeJS后端应用中调用https://api.solscan.io/chaininfo API时,遇到了429: Too many requests错误,但相同的API在React前端使用fetch或axios调用完全正常。

测试多种调用方式后,结果如下:

调用方式运行环境结果
fetchReact前端正常返回结果
axiosReact前端正常返回结果
curlWindows本地正常返回结果
浏览器(Chrome)Windows本地正常返回结果
fetchNodeJS后端429 Too many requests
axiosNodeJS后端429 Too many requests
PostmanWindows本地429 Too many requests

NodeJS中使用axios调用API的原始代码:

const axios = require("axios");

axios.get("https://api.solscan.io/chaininfo")
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

原因分析

出现差异的核心原因是Solscan API服务对请求的标识头做了限流策略区分:

  • 前端(浏览器、React)和本地curl请求会自动带上符合常规用户端的User-Agent请求头,这类请求被服务端判定为普通用户请求,限流阈值较高;
  • NodeJS后端、Postman默认发送的请求头带有明显的非浏览器标识(比如NodeJS的默认User-Agent为node-fetch/x.x.x或axios专属标识),Postman也会自带专属User-Agent,这类请求被服务端归为爬虫/批量请求范畴,限流阈值极低甚至直接触发拦截。

修复方案

在NodeJS的请求中添加模拟浏览器的请求头,重点设置User-Agent,让服务端识别为合法用户请求:

axios修改请求头示例

const axios = require("axios");

axios.get("https://api.solscan.io/chaininfo", {
  headers: {
    "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"
  }
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

fetch修改请求头示例

fetch("https://api.solscan.io/chaininfo", {
  headers: {
    "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"
  }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

额外注意:

  • 不要频繁更换User-Agent,避免被识别为恶意爬虫;
  • 如果后续仍出现限流,建议添加请求间隔控制,或查看Solscan官方文档申请API密钥,通过合法授权提升限流额度。

内容的提问来源于stack exchange,提问作者Code Plus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:48:26