java - jsoup 获取 URL 时出错。 Status=503 仅在 Heroku 上

标签 java heroku jsoup

当使用Jsoup连接到https://rateyourmusic.com时通过 localhost 它工作得很好,但是,在 Heroku 上,我总是收到错误 503,即使使用 userAgent

String url = "https://rateyourmusic.com/charts/top/album/2016";
Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/70.0").followRedirects(true).timeout(100000).ignoreContentType(true).get();

Heroku 日志:

2019-10-26T23:20:06.674831+00:00 heroku[router]: at=info method=GET path="/searchTrack?searchRadio=2&playlistName=&searchNameArtist=&searchNameAlbum=https%3A%2F%2Frateyourmusic.com%2Fcharts%2Ftop%2Falbum%2F2016&amountChart=3&amountRadio=3" host=gettoptracks.herokuapp.com request_id=026060b4-71ab-4510-9809-fe5cffc3f325 fwd="176.32.19.237" dyno=web.1 connect=1ms service=313ms status=200 bytes=11534 protocol=https

    2019-10-26T23:20:06.670478+00:00 app[web.1]: org.jsoup.HttpStatusException: HTTP error fetching URL. Status=503, URL=https://rateyourmusic.com/charts/top/album/2016

    2019-10-26T23:20:06.670652+00:00 app[web.1]:    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:760)

    2019-10-26T23:20:06.670655+00:00 app[web.1]:    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:705)

    2019-10-26T23:20:06.670661+00:00 app[web.1]:    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:295)

    2019-10-26T23:20:06.670663+00:00 app[web.1]:    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:284)

    2019-10-26T23:20:06.670668+00:00 app[web.1]:    at com.spotifyapi.demo.service.ServiceApiImpl.getRYM(ServiceApiImpl.java:561)

   ...

    2019-10-26T23:20:06.671189+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:748)

如果我尝试使用 Jsoup 连接到 Heroku 上的另一个网站,它会起作用。

提前致谢。

最佳答案

这在您的代码中不是问题。服务器返回错误503。这意味着服务器不喜欢您的请求或您的客户端,并拒绝返回正常响应。可能 Heroku 就是原因,它被阻止以避免抓取他们的网站。
为了 100% 确定您可以使用其他东西来下载此页面的内容,以避免使用 Jsoup,请使用纯 HttpClient 甚至纯 Java: How to download and save a file from Internet using Java?
如果结果相同,则确认他们阻止了 Heroku。您可以尝试通过一些代理连接来克服这个问题。

关于java - jsoup 获取 URL 时出错。 Status=503 仅在 Heroku 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575485/

相关文章:

java - 创建excel文件-编译错误

java - 将 cellpadding 添加到 Java JTable

ruby-on-rails - 在 Heroku 上充当标签

reactjs - Heroku 没有这样的文件或目录,stat '/app/client/build/index.html'

java - 如何使用 JSOUP 获取解析的 HTML 特殊字符

java - 使用 Jsoup 仅从子节点中选择?

java - 如何使用带有jsoup的类名从表标签中提取 "value"

java - 我在 Swing 程序中的什么地方实现 main() 函数?

java - 在 CDI 装饰器之间共享数据

rest - 如何在 Heroku 上使用 JAX-RS 找出传入的 RESTful 请求的 IP?