Взять расписание с сайта

507
07 февраля 2017, 19:06

Нужна взять расписание со страницы сайте https://dota2.ru/esport/matches/ Пытался использовать Jsoup

document = Jsoup.connect ("https://dota2.ru/esport/matches/").get();
System.out.println(document.title());

К сожалению, эффекта 0. Никаких сообщений об ошибке я не получаю, а title пуст Далее, пробовал получить html страницы вот так:

public class UrlConnectHelper {
    private String content = null;
    public String getHtml(String url)
    {
        try {
            URLConnection connection = new URL(url).openConnection();
            Scanner scanner = new Scanner(connection.getInputStream());
            scanner.useDelimiter("\\Z");
            content = scanner.next();
    }catch ( Exception ex ) {
        ex.printStackTrace();
    }
        return content;
    }
}

Получаю бесполезный кусок html кода (не код самой страницы).

<html><head></head><body><script>var xmlhttp = new XMLHttpRequest();function eraseCookieFromAllPaths(name) { var pathBits = location.pathname.split("/");var pathCurrent = " path=";document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT;";for (var i = 0; i < pathBits.length; i++) {pathCurrent += ((pathCurrent.substr(-1) != "/") ? "/" : "") + pathBits[i];document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 GMT;" + pathCurrent + ";";}}eraseCookieFromAllPaths("BHC");xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var a=xmlhttp.responseText;document.cookie="BHC="+a+"; path=/";document.location.href="/esport/matches/"; } };xmlhttp.open("GET", "/banhammer/pid", true);xmlhttp.send();</script></body></html>

Мне кажется, проблема в том, что сайт использует защиту от DDoS и проксирование, но как это решить не знаю.

Answer 1

Вам нужно получить значение по ссылке https://dota2.ru/banhammer/pid и передать Cookie BHC=<значение> в запрос.

  1. Запрос на https://dota2.ru/banhammer/pid с заголовком Referer: https://dota2.ru/esport/matches/
  2. Получаем прямым текстом ответ от https://dota2.ru/banhammer/pid (Пример: 3tYF8uhzelr3WAu6TqYikXIOTDg%3D_232290966385)
  3. Подставляем это значение в виде Cookie BHC при запросе к https://dota2.ru/esport/matches/ (Пример: Cookie: BHC=3tYF8uhzelr3WAu6TqYikXIOTDg%3D_232290966385) и без проблем получаем содержимое страницы

На PHP я полностью получил необходимую страницу. Так как JAVA не знаю, код под него написать не смогу.

READ ALSO
Как выполнить код, записанный в textarea?

Как выполнить код, записанный в textarea?

Есть textarea, пользователь вводит туда, например, <p> Привет </p>, нажимает ОК и через js это все выполняется и на странице отображается " Привет...

454
Аудио плеер на сайт свойство duration

Аудио плеер на сайт свойство duration

При нескольких запусках этого кода свойство audioduration то принимает валидное значение, то Infinity, с чем может быть связанно?

479
jQuery image source

jQuery image source

Здравстуйте! Такой вопрос: например у меня есть динамический объект

493
Как сделать градиент css

Как сделать градиент css

Нужно на css сделать градиент как на картинкеНо на картинке затемнение идёт снизу в верх, а мне нужно наоборот - сверху вниз

477