微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 python 请求创建对 API 的请求即使所有标题都正确

如何解决无法使用 python 请求创建对 API 的请求即使所有标题都正确

我正在尝试使用 python 获取请求 https://api.dex.guru/v1/tokens/0x7060d3F1CC70A07f4768560B9D9B692ac29244dE。我尝试了很多不同的东西,但它们都以 403 错误禁止响应。我已经尝试了我能想到的所有方法,但都没有成功。

目前我的这个请求的代码是这样的:

headers = {
    'authority': 'api.dex.guru','cache-control': 'max-age=0','sec-ch-ua': '^\\^','sec-ch-ua-mobile': '?0','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/90.0.4430.212 Safari/537.36','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','sec-fetch-site': 'none','sec-fetch-mode': 'navigate','sec-fetch-user': '?1','sec-fetch-dest': 'document','accept-language': 'en-US,en;q=0.9','cookie': (cookies are here)
}

response = requests.get('https://api.dex.guru/v1/Tradingview/symbols?symbol=0x7060d3f1cc70a07f4768560b9d9b692ac29244de-bsc',headers=headers)

然后我打印出响应,这是一个 403 错误。请帮忙,我需要这些数据用于一个项目。

解决方法

我自己尝试过解决这个问题,看来您的站点有某种 DDOS 保护,Cloudflare 阻止了这些 API 调用。无论如何,我不是 Python 或标头方面的专家,因此您可能会提供一些东西来解决这个问题。但是,我查看了他们的 website,似乎 API 仍在开发中。最后,我收到了 503 错误,并且我能够通过浏览器正常访问 API。如果您不介意解释一些 cookie/headers 正在做什么,很乐意对此进行更多修改。

,

尝试检查响应的正文(response.contentresponse.text),因为这可能会让您更清楚地了解您被阻止的原因。

对我来说,他们似乎根据 user-agent 进行了一些过滤。我确实得到了一个 Cloudflare DoS 保护页面(例如带有 HTTP 503 响应)。使用表明 JavaScript 不起作用的用户代理字符串,我确实得到了 HTTP 200:

headers = {"User-Agent": "HTTPie/2.4.0"}
r = requests.get("https://api.dex.guru/v1/tokens/0x7060d3F1CC70A07f4768560B9D9B692ac29244dE",headers=headers)
,

下午好。

在 Reddit 上另一位用户的帮助下,我设法让它发挥了作用。

让这个 API 调用工作的关键是使用 cloudcraper 模块:-

import cloudscraper
scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
print(scraper.get("https://api.dex.guru/v1/tokens/0x8076C74C5e3F5852037F31Ff0093Eeb8c8ADd8D3-bsc").text)

这给了我一个带有预期 JSON 内容的 200 响应(用你的 URL 替换我上面的 URL,你应该得到预期的 200 响应)。

非常感谢 吉米

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。