如何通过Node.js或Python获取OpenSea代币的ERC721/ERC1155标准
实现方案
核心逻辑
你不需要爬取前端页面解析代币标准,直接调用OpenSea官方公开的资产查询接口即可获取准确的schemaName值,返回结果可以直接传入你现有的createBuyOrder方法使用:
- 先从OpenSea资产链接中拆分参数:链接固定格式为
/assets/{token_address}/{token_id},按斜杆拆分即可拿到代币合约地址token_address和代币IDtoken_id - 调用资产查询接口,返回的元数据中直接包含
schema_name字段,值为ERC721或ERC1155,就是你需要的参数
Node.js 实现示例
先安装依赖:
npm install axios
代码示例:
const axios = require('axios'); // 解析OpenSea链接提取代币参数 function parseAssetLink(url) { const urlParts = url.split('/').filter(item => item); return { tokenAddress: urlParts[urlParts.length - 2], tokenId: urlParts[urlParts.length - 1] } } async function getAssetSchemaName(openseaAssetUrl) { const { tokenAddress, tokenId } = parseAssetLink(openseaAssetUrl); // 低频率调用无需加API密钥,高频率调用需在headers中添加X-API-KEY参数 const response = await axios({ url: `https://api.opensea.io/api/v1/asset/${tokenAddress}/${tokenId}/`, method: 'GET', headers: { Accept: 'application/json' } }); return response.data.schema_name; } // 调用示例 // const schemaName = await getAssetSchemaName('你的OpenSea资产链接')
Python 实现示例
先安装依赖:
pip install requests
代码示例:
import requests def parse_asset_link(url): url_parts = [i for i in url.split('/') if i] return { "token_address": url_parts[-2], "token_id": url_parts[-1] } def get_asset_schema_name(opensea_asset_url): params = parse_asset_link(opensea_asset_url) # 高频率调用需在headers中添加X-API-KEY字段 headers = {"Accept": "application/json"} resp = requests.get( f"https://api.opensea.io/api/v1/asset/{params['token_address']}/{params['token_id']}/", headers=headers ) return resp.json()["schema_name"] # 调用示例 # schema_name = get_asset_schema_name("你的OpenSea资产链接")
注意事项
- 低频率测试调用不需要申请开发者API密钥,高频率商业使用需要申请OpenSea开发者密钥添加到请求头避免被限流
- 不推荐解析前端页面获取代币标准,OpenSea前端结构迭代频繁,解析逻辑容易失效,且平台反爬机制严格容易触发IP封禁
内容的提问来源于stack exchange,提问作者azvast
相关产品推荐
相关产品推荐

