0

Всех приветствую! Несколько часов уже не могу найти решение моей проблемы

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

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

Моё решение: Я в цикле отправляю запрос на сайт. И если html код страницы изменился, я определённым образом реагирую.

Однако такое решение мне не очень подходит, потому что сайт lichess блокирует мои слишком частые запросы. В качестве временного решения, я просто увеличил задержку между запросами.

Это помогло, однако из-за этой задержки программа не моментально реагирует на ход противника.

Есть ли способ наложить на произвольный сайт вебхук (возможно, я это слово здесь неуместно употребил, не разбираюсь), чтобы реагировать на изменения. Без всяких циклов с постоянными запросами. Чтобы это выглядело, например, так:

    public static void Main()
    {
        string url = "http://example.com/";
        WebChangesDetector detector = new WebChangesDetector(url);
        detector.ChangingDetected += OnWebPageChanged;
    detector.StartPooling();
}

private void OnWebPageChanged()
{
    ...
}

  • 2
    Научитесь анализировать сайты, поймите как они устроены, из чего состоят, как формируют контент, ведь в наше время, многие сайты разделены на несколько составляющих, условно бекенд и фронтэнд, где фронт (UI) не хранит данные, он лишь общается с сервером теми или иными способами. А вот бекенд, имеет некую точку доступа, к которой UI и обращается/подписывается на события, и т.д. Самые распространенные методы, это RestAPI (его ответвление в виде GraphQL), а также Websocket (его ответвление в лице SignalR). Поймете, что на сайте, поймете, как работать с ним. Ну а универсальных решений нет. – EvgeniyZ Mar 05 '23 at 15:32
  • @EvgeniyZ, спасибо – SdxSdySdz Mar 05 '23 at 15:34
  • Если брать упомянутый вами "вебхук" - то это обычно механизм, где вы на конкретном сайте, в его настройках, указываете конкретный адрес, на который он будет в случае события отправлять данные сам. Если такого разработчики сайта не сделали, то и вебхуков каких либо там быть не может. Конкретно на указанном вами сайте, используется простой websocket, вам достаточно понять что он требует, и работать уже с ним. Как это сделать, я писал допустим тут. Пробуйте, изучайте) – EvgeniyZ Mar 05 '23 at 15:36
  • В JavaScript есть такой класс MutationObserver, я им пользуюсь в особо упоротых случаях. Но ваш случай не такой. – aepot Mar 05 '23 at 19:00

0 Answers0