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 / Ограничение доступа и ресурсов, безопасность

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




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

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