jsoup ошибка при получении URL. Статус = 503 только на Heroku - PullRequest
0 голосов
/ 27 октября 2019

при использовании 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)

Если я пытаюсь подключиться к другому веб-сайту на Heroku с помощью Jsoup, он работает.

Заранее спасибо.

1 Ответ

1 голос
/ 27 октября 2019

Это не проблема в вашем коде. Ошибка 503 возвращается сервером. Это означает, что что-то не понравилось серверу в вашем запросе или вашем клиенте и отказалось возвращать нормальный ответ. Вероятно, причина в Heroku, и она заблокирована, чтобы не соскрести их сайт.
Чтобы быть на 100% уверенным, что вы можете использовать что-то другое для загрузки содержимого этой страницы, чтобы избежать использования Jsoup, используйте обычный HttpClient или даже чистую Java: Какзагрузить и сохранить файл из Интернета с помощью Java?
Если результат совпадает, это подтверждает, что они блокируют Heroku. Вы можете попробовать подключиться через некоторый прокси, чтобы преодолеть это.

...