2

当我尝试使用 Java 使用 .json 扩展名访问任何 Reddit 页面时,我收到 HTTP 429 Too Many Requests 响应。

我正在使用此处找到的 Java 代码,没有进行任何修改(更改目标 URL 除外)。我正在尝试访问以下 URL:

我可以使用浏览器很好地访问这些页面,但无法以编程方式访问它们,尽管我每次都发出一个请求并在两者之间等待。当在一分钟内发出超过 30 个请求时,Reddit 会返回此消息,但我的请求远少于此,而且我的网络上没有其他人使用 Reddit。

有谁熟悉这个以及为什么我可能会收到这些错误?有没有更好的方法来使用 Java 来解决这个问题?

4

1 回答 1

9

确保使用自定义用户代理字符串 - 请参阅 API 规则的第 4 个要点:

  • 将客户的 User-Agent 字符串更改为唯一且具有描述性的字符串,包括目标平台、唯一的应用程序标识符、版本字符串以及作为联系信息的用户名,格式如下:

      <platform>:<app ID>:<version string> (by /u/<reddit username>)
    
    • 例子:

          User-Agent: android:com.example.myredditapp:v1.2.3 (by /u/kemitche)
      
    • 许多默认的用户代理(如“Python/urllib”或“Java”)受到极大的限制(强调我的),以鼓励独特的和描述性的用户代理字符串。

    • 包括版本号并在您构建应用程序时对其进行更新使我们能够安全地阻止您的应用程序的旧错误/损坏版本。

    • 永远不要对你的用户代理撒谎。这包括欺骗流行的浏览器和欺骗其他机器人。我们将禁止带有极端偏见的说谎者。

于 2015-06-24T01:21:29.407 回答