| Отсеивание 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>';
       }
       ....
   }
 | 
|   | 
| 
 
 
 | 
 | 
| Раздел:    Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Ограничение доступа и ресурсов, безопасность |