GET запрос на сайт с java возвращает 403 даже после включения свойства User-Agent - PullRequest
0 голосов
/ 02 марта 2020

Поэтому я пытаюсь собрать содержимое веб-сайта (https://search.torrents.io/) из приложения java, используя запрос GET.

При наличии правильной информации о торренте sh после https://search.torrents.io/, например, например: https://search.torrents.io/1A1B3A4C80431A536A160FD94C2C13AFD38AF108 даст мне некоторую информацию о торренте с соответствующей информацией sh (только для контекста, не важно для проблемы).

При отправке запроса GET из браузера или почтальона веб-сайт возвращает ответ 200, но запрос веб-сайта из приложения java не делает Кажется, что это работает, и я получаю ошибку 403-запрещено:

Server returned HTTP response code: 403 for URL: https://search.torrents.io/1A1B3A4C80431A536A160FD94C2C13AFD38AF108

Вот как я это делаю:

try {
        rss = new URL("https://search.torrents.io/" + infohash);

        httpconn = (HttpsURLConnection)rss.openConnection();

        httpconn.setRequestMethod  ("GET");
        httpconn.setRequestProperty("Content-Language", "en-US");
        httpconn.setRequestProperty("User-Agent",       "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36");

        httpconn.setRequestProperty("Host",     "search.torrents.io:443");
        httpconn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
        httpconn.setRequestProperty("Sec-Fetch-Dest",       "document");

        httpconn.setUseCaches(false);
        httpconn.setDoInput(true);
        httpconn.setDoOutput(true);

    } catch (Exception e) {
        return(TT.ERROR);
    }

    BufferedReader reader = null;

    try {
        reader = new BufferedReader(new InputStreamReader(rss.openStream()));
    } catch (Exception e) {
        return(TT.ERROR);
    }

Теперь при запуске я не добавлял никаких свойств запроса в запросы - получили ошибку 403 и обнаружили, что мне нужно было включить свойство User-agent, чтобы оно действовало как запрос браузера, но это тоже не сработало.

Затем я прочитал больше об этом, и кто-то предложил мне зайти на плагин http заголовки http для chrome, и я в основном добавил все свойства, которые были предустановлены и, казалось, имели смысл для запроса.

Я также обнаружил, что добавление агента пользователя работает для многих других веб-сайтов, но не для этого. Также кажется странным, что он работает от почтальона, который на самом деле не является браузером. Разве запросы не должны быть равны серверу, если они содержат одинаковые заголовки?

Кто-нибудь знает, как решить эту проблему? Любой вклад очень ценится.

Спасибо, Мати c

1 Ответ

0 голосов
/ 25 апреля 2020

Спасибо за предложения.

Итак, я не решил проблему, возможно, проблема в том, что веб-сайт, который я запрашиваю, распознает запросы, поступающие из библиотеки java по умолчанию. Я исправил это, просто используя другую библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...