【问题标题】:Why is Poloniex API blocked by CAPTCHA? Expected JSON, but response is HTML为什么 Poloniex API 会被 CAPTCHA 阻止?预期为 JSON,但响应为 HTML
【发布时间】:2018-06-06 01:12:36
【问题描述】:

我正在使用以下代码从 poloniex API 中查找 json。它返回 HTML 而不是 JSON。我究竟做错了什么?我想要 JSON。

import requests
res = requests.get("https://poloniex.com/public?command=returnTradeHistory&currencyPair=BTC_NXT&start=1410158341&end=1410499372")
print(res.text)

【问题讨论】:

  • 无法复制;我使用带有请求 2.18.4 的 Python 3.6.3 和带有请求 2.11.1 的 Python 2.7.10 来获取 JSON。
  • 在我的例子中,res.json() 给出了 1112 个 json 元素的列表。 Python3.6.3,最新请求。
  • 我明白了,也许你已经超出了 API 的一些限制?
  • 是的,因为在您的情况下,它是您所说的 HTML。我在他们链接的 API 文档中读到,“请注意,每秒对公共 API 进行超过 6 次调用,或者重复且不必要地获取过多数据,可能会导致您的 IP 被禁止。”
  • 我投票决定将此问题作为离题结束,因为它取决于特定供应商 API 的访问策略,因此超出了 SO 范围。

标签: python json python-requests poloniex


【解决方案1】:

总结评论链,您几乎肯定在做一些服务器不喜欢的事情,导致它要求您提供验证码。

其中一位评论者指出了“每秒 6 次调用公共 API 或重复且不必要地获取过多数据”的记录限制。我们只能猜测“重复”或“不必要”对服务意味着什么,但我认为你至少让它变得可疑,因为它(通过验证码)询问“你是一个人还是一个程序?”。

如果您想知道该服务的实际限制是多少,请联系该公司。您可能需要付费才能获得所需的数据。

【讨论】:

  • 验证码也取决于国家/地区。如果我使用美国代理并访问 API,它会按预期工作,但例如来自印度,它会返回 CATPCHA。
【解决方案2】:

感谢用户 Mehul 的评论,我解决了同样的问题,但使用的是 PHP。我尝试了 2 个小时来制作一个简单的 curl() 来使用这个简单的调用来检索公共 api:

https://poloniex.com/public?command=returnTicker

对我来说,问题是我试图从本地服务器(在家)进行呼叫。所以感谢 Mehul,我决定测试将脚本上传到我的服务器,瞧:它立即按预期运行,返回 json 数组。

我的服务器在美国,虽然我在墨西哥。也许会有IP和地理定位的问题。或者“家庭”与“服务器”连接的问题。我不知道,但我希望我的方法对其他人有用。我真的很难在这个问题上找到一些帮助。 Ep,我已经实现了与其他交易所的一些 API 集成!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多