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

调用OpenSea API检索订单时被Cloudflare拦截该如何排查?

问题原因与解决方案

问题根因

这个问题是调用方式错误叠加OpenSea服务侧的接口权限限制共同导致的,具体原因如下:

  • 你调用的OpenSea订单查询接口属于强鉴权接口,必须携带官方颁发的API密钥,你当前的请求头没有加X-API-KEY字段,直接被Cloudflare的前置访问规则拦截。你之前能正常调用的通用资产查询接口属于低权限公开接口,没有强制鉴权要求,所以可以正常返回结果。
  • OpenSea API不支持浏览器端直接发起跨域请求,你用前端fetch调用时,浏览器自动携带的Origin、User-Agent等特征头会被Cloudflare判定为非法访问,即便更换网络和设备也无法绕过该规则。

修复方案

  • 先申请OpenSea官方API密钥,测试可使用免费配额的密钥。
  • 所有API请求统一从后端服务发起,避免前端跨域问题,也不会暴露你的API密钥。
  • 补全请求头参数,必须加入X-API-KEY字段,可额外配置合理的User-Agent避免被误拦截。
  • 本地测试时可使用Node.js脚本、Postman、curl等工具发起请求,不要直接使用浏览器端fetch。

修正后的Node.js调用示例

const fetch = require('node-fetch');

const options = {
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'X-API-KEY': '你自己申请的OpenSea API密钥',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
  }
};

fetch('https://api.opensea.io/wyvern/v1/orders?asset_contract_address=0xbd3531da5cf5857e7cfaa92426877b022e612cf8&bundled=false&include_bundled=false&include_invalid=false&token_id=3881&limit=20&offset=0&order_by=created_date&order_direction=desc', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

内容的提问来源于stack exchange,提问作者wolf dun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:07