The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Отсеивание AI-ботов на web-сервере через Cookie
Для отсеивания ботов, агрессивно индексирующих контент, игнорируя правила из
robots.txt, можно воспользоваться тем, что многие боты запрашивают заранее
предопределённый набор страниц и не передают Cookie, выставленные в ответ на
прошлые запросы.

Идея в том, чтобы при поступлении запроса проверять наличие определённой
Cookie и если она отсутствует вместо запрошенного контента отдавать
HTML-заглушку, возвращающую JavaScript-код для выставления Cookie и
перенаправления пользователя на ту же страницу.  При отправке запроса из
браузера при первом входе запрос незаметно для пользователя будет проброшен
через код установки Cookie. В промежуточном ответе используем код
ошибки HTTP 418, информирующий о нежелании обрабатывать автоматизированные запросы.

Предложенный метод не отсеивает всех ботов, но проще в настройке и менее
назойливый для посетителей, чем применение системы защиты от ботов Anubis,
допускающей вход только после подбора на языке JavaScript значения, хэш SHA-256
от которого в сочетании с выданной сервером строкой содержит определённое число
лидирующих нулей (данная задача требует ресурсов CPU для решения, но не требует
ресурсов для проверки).



Пример для http-сервера Caddy:

   example.com {
      # Проверка всех запросов на наличие Cookie "verified"
      @unverified not header Cookie *verified*

      # JavaScript-код, выдаваемый для запросов без Cookie "verified"
      handle @unverified {
          header Content-Type text/html
          respond <<EOF
            <script>
            setTimeout(() => {
               document.cookie = 'verified=1; Path=/;';
               window.location.reload();
            }, 1000);
            </script>
          EOF 418
      }

      # Нормальное проксирование остальные запросов
      reverse_proxy localhost:3001
  }

Пример для nginx:

    location / {
       if ($cookie_verified = "") {
           add_header Content-Type text/html;
           return 418 '<script>setTimeout(() => {document.cookie = 'verified=1; Path=/;';window.location.reload();}, 1000);</script>';
       }
       ....
   }
 
03.11.2025 , Источник: https://fxgn.dev/blog/anubis/...
Ключи: bot, block, cookie, javascript, caddy, nginx / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность

Обсуждение [ RSS ]
  • 1.1, повар (?), 16:17, 03/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну вот, теперь пейсaтeли таких ботов знают как это обойти.
    Думаю лучше таким ботам намеренно "скармливать" всякую чушь и делать это всем владельцам сайтов.
    Может тогда удастся принудить их к соблюдению правил.
    Хотя это наверно пустая надежда, когда у людей нет ни совести, ни чести...
     
     
  • 2.4, Аноним (4), 12:51, 05/11/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Думаю лучше таким ботам намеренно "скармливать" всякую чушь и делать это всем владельцам сайтов.
    >Может тогда удастся принудить их к соблюдению правил.

    Не только не поможет, но и сделает хуже. Сайт зарепортят в Cloudflare, поисковики, хостеру и регистратору домена - как скам помойку черных вебмастеров.

     

  • 1.2, S_Paul (??), 18:14, 04/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть готовый модуль nginx testcookie. Не забыть добавить нормальных ботов в белый список.
     
  • 1.3, Аноним (3), 20:45, 04/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Передавать куки с помощью requests или httpx тривиально Скрейпинг требует доста... большой текст свёрнут, показать
     
     
  • 2.7, Аноним (7), 11:26, 07/11/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Владельцы сайтов не обязаны делать вам хорошо. Скорее это вы должны думать, как не делать им плохо. Потому что на самом деле не являетесь теми, для кого создается и наполняется сайт. Правильно было бы как-то платить за данные, если в дальнейшем из них извлекается какая-то прибыль.

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

     
     
  • 3.13, Аноним (13), 03:20, 12/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Правильно было бы как-то платить за данные, если в дальнейшем из них извлекается какая-то прибыль.

    А вы в суд обратитесь.

     

  • 1.5, Аноним (7), 11:07, 07/11/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как время от времени скачивающий половину интернета человек, выскажусь на тему бесполезности.
    В скрипте дописывается одна строчка с установкой этой куки, да и дело с концом.

    Реально мешает, когда сервер использует куки (в комбинации с IP) для того, чтобы "красить" клиентов и лимитирует использование для каждой, особенно если код ответа нормальный и контент отдаваемых страниц отличается не принципиально.
    Но практически всегда это каким-то образом обходится. Так, я спарсил данные об организациях определенного типа всего мира (что-то часов за 6) с гугл карт, вообще не меняя куки, одним и тем же окном, даже не пряча хедлесс хромиум. Тупо за счет алгоритма обхода карты, который делал бессмысленной защитку, обрезающую количество ответов. Поля получал, проверяя их взаимное расположение и текст (мутагенез с ид и классами бесполезен). Весь скрипт, где-то строк 500. Никакого рокет сайенс.

    Эникей админы, у которых до сих пор сайты на морально устаревшем языке и фреймворке, лучше бы думали, как его убрать за кэширующий сервер. Например, если куки нет, можно кидать контент в кэш на ключ урла и отдавать оттуда. Есть куки - запрашивать с апстрима по классике. Куки давать не всем подряд, а только тем, кому будет показан другой контент страниц. Сможете раздавать хоть гигабит трафика с одного ядра без особого напряга. Но вам же надо ботов наказывать, а не гарантировать уровень сервиса :)

    К слову, ботов порезать проще простого. Достаточно красить трафик по автономкам и без ограничений пускать только интернет-провайдеров, предоставляющих услуги населению. Но это же думать надо и как-то страшненько.

     
     
  • 2.8, Аноним (8), 12:14, 07/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Красить трафик стало вредно после экспансии хитрых NAT-ов и уползания ощутимого числа пользователей в VPN.

    Блокировать единичные скачивания не проблема, с этом и rate limit справится. Проблема в распределённых скрапперах, которые заваливают запросами с десятков тысяч или даже сотен тысяч разных IP (один раз за сутки насчитал около 300 тысяч), которые шлют запросы параллельно в 10-100 потоков. Когда на одном сервере несколько доменов - всё становится вообще печально и напоминает DDoS. Самое мерзкое, что с каждого IP приходит по несколько десятков запросов и потом IP меняется. С этим ещё можно бороться, когда трафик идёт из отдельных корпоративых подсетей. Но последнее время научились что-то вроде ботнета делать и привлекать обычных пользователей, которые за небольшую денежку ставят себе браузерный плагин для "помощи" обучения LLM.

    По поводу оптимизации и отдачи статики, сайт остаётся жив, но из-за ботов кардинально вырастают затраты, когда используются площадки с оплатой за ресурсы или трафик.

     
     
  • 3.9, Аноним (7), 13:22, 07/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Красить трафик != резать трафик. Смысл в том, чтобы обслуживать мусорный трафик в последнюю очередь с самым низким приоритетом.
    Критерий наличия авторизации (и других признаков "естественности") очевидным образом снимает или ослабляет лимиты, даже если там один с ботами провайдер.

    >из-за ботов кардинально вырастают затраты

    Подрубать "серым" клиентам скорость соединений/коннекты. Чтобы поток парсера максимально долго торчал в памяти на той стороне, читая по чайной ложке. Вынуждать использовать хедлесс браузер (памяти никогда особо много не бывает). Зашумлять верстку тегами/комментами, убирать из нее тексты/ид/классы, за которые просто зацепиться. Все это конечно не про мейнстримный фронтенд с уо разработчиками.

    >в распределённых скрапперах, которые заваливают запросами с десятков тысяч или даже сотен тысяч разных IP (один раз за сутки насчитал около 300 тысяч), которые шлют запросы параллельно в 10-100 потоков. Когда на одном сервере несколько доменов - всё становится вообще печально и напоминает DDoS. Самое мерзкое, что с каждого IP приходит по несколько десятков запросов и потом IP меняется

    Люди, занимающиеся парсингом и DDOS - одни и те же люди. Конечно это все напоминает ддос)

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру