请求修复OpenSea GraphQL接口调用代码:输出HTML文本而非接口响应问题
修复Python调用OpenSea GraphQL接口返回HTML的问题
你的代码返回HTML而非预期的GraphQL响应,核心是请求格式存在几处错误,导致服务器无法正确处理请求,返回了错误页面的HTML。下面是具体修复步骤和完整代码:
问题分析与修改点
variables格式错误:你把variables写成了字符串"{username: 'alqe'}",但GraphQL要求该字段是JSON对象(对应Python里的字典),而非字符串格式。- 多余的无效字段:
data中的"{username}": "alqe"是冗余内容,会破坏请求结构,必须删除。 - 请求头
accept格式不规范:'accept': ' / '不符合HTTP标准,改为'accept': '*/*'才能让服务器正确识别你接受的内容类型。 - 优先使用结构化响应输出:直接打印
req.text会得到原始文本,改用req.json()能获取格式化的JSON数据,可读性更强。
修复后的完整代码
import requests url = 'https://api.opensea.io/graphql/' hed = { 'accept': '*/*', 'accept-language': 'en-US,en;q=0.9', 'authorization': 'JWT', 'content-type': 'application/json', 'cookie': 'csrftoken=0QsXGzaeSJSKvYGd9aRTQVq7jWWOIpSy6wvwBpDRn2pK3WKwCxkeeKcH8WLPEK4W; __cf_bm=noBFWZQBJGF5_1n6CaDdjs17wv896.exY_FDTnEC1dU-1645954415-0-AbXYdnig4DyTbdEVSRMN5CnnLW9A7MtetoE8YEiy6Y7Rzn4DT/elvk/fjPr6vBRxUuv3LYardOJPPrdceHF/dkY=; amp_ddd6ec=-RffiW6t4AxE9_A_Eg7GWR...1fst7hcr1.1fst8opd0.k.1.l', 'origin': 'https://opensea.io', 'referer': 'https://opensea.io/', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site', 'sec-gpc': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36', 'x-api-key': '2f6f419a083c46de9d83ce3dbe7db601', 'x-build-id': 'sJ2yOKDaJSxeSQoRzRnai', 'x-signed-query': '1632dfddbebd2a64cf8a0920a11b5f4927fd2d1556bcacd4ab31771130e538bb', 'x-viewer-address': ';', } data = { "id": "useUsernameInputQuery", "query": """query useUsernameInputQuery( $username: String! ) { account(identity: {username: $username}) { address id } }""", "variables": {"username": "alqe"} } req = requests.post(url=url, headers=hed, json=data) # 打印结构化的JSON响应 print(req.json())
额外说明
修改后请求会以标准GraphQL格式发送,服务器将返回你需要的JSON响应。如果仍有问题,可以检查authorization字段的JWT是否有效,以及其他请求头参数是否符合OpenSea接口的最新要求。
内容的提问来源于stack exchange,提问作者يوسف القرش
相关产品推荐
相关产品推荐

