Поэтому я пытаюсь собрать содержимое веб-сайта (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