The OpenNET Project / Index page

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



"Раздел полезных советов: Отсеивание AI-ботов на web-сервере через Cookie"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от auto_tips (?), 03-Ноя-25, 16:17 
Для отсеивания ботов, агрессивно [[https://www.opennet.me/opennews/art.shtml?num=62925 индексирующих]] контент, игнорируя правила из robots.txt, можно воспользоваться тем, что многие боты запрашивают заранее предопределённый набор страниц и не передают Cookie, выставленные в ответ на прошлые запросы.

Идея в том, чтобы при поступлении запроса проверять наличие определённой  Cookie и если она отсутствует вместо запрошенного контента отдавать HTML-заглушку, возвращающую JavaScript-код для выставления Cookie и перенаправления пользователя на ту же страницу.  При отправке запроса из браузера при первом входе запрос незаметно для пользователя будет проброшен через код установки Cookie. В промежуточном ответе используем код
ошибки HTTP [[https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/... 418]], информирующий о нежелании обрабатывать автоматизированные запросы.

Предложенный метод не отсеивает всех ботов, но проще в настройке и менее назойливый для посетителей, чем применение системы защиты от ботов [[https://github.com/TecharoHQ/anubis 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>';
       }
       ....
   }


URL: https://fxgn.dev/blog/anubis/
Обсуждается: http://www.opennet.me/tips/info/3287.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от повар (?), 03-Ноя-25, 16:17 
Ну вот, теперь пейсaтeли таких ботов знают как это обойти.
Думаю лучше таким ботам намеренно "скармливать" всякую чушь и делать это всем владельцам сайтов.
Может тогда удастся принудить их к соблюдению правил.
Хотя это наверно пустая надежда, когда у людей нет ни совести, ни чести...
Ответить | Правка | Наверх | Cообщить модератору

4. "Отсеивание AI-ботов на web-сервере через Cookie"  –1 +/
Сообщение от Аноним (4), 05-Ноя-25, 12:51 
>Думаю лучше таким ботам намеренно "скармливать" всякую чушь и делать это всем владельцам сайтов.
>Может тогда удастся принудить их к соблюдению правил.

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

Ответить | Правка | Наверх | Cообщить модератору

6. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от Аноним (6), 07-Ноя-25, 11:14 
Торагой эникей "владелец сайта". Самая большая проблема при парсинге - это что твой ГС упал и не встает.
Вместо того, чтобы сделать свой сайт способным выдерживать больше 1 запроса в секунду, ты готов заморочиться и "скармливать чушь", что намного сложнее.

Ты выложил на сайте информацию, чтобы люди могли ее получить. Когда людям нужна она сразу вся, тебе почему-то это не нравится. А собственно почему???

У тебя на сайте есть лицензионное соглашение, определяющее доступ к информации? Ты точно имеешь права на размещенный контент?

Вопросы, вопросы...

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

2. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от S_Paulemail (??), 04-Ноя-25, 18:14 
Есть готовый модуль nginx testcookie. Не забыть добавить нормальных ботов в белый список.
Ответить | Правка | Наверх | Cообщить модератору

3. "Отсеивание AI-ботов на web-сервере через Cookie"  –2 +/
Сообщение от Аноним (3), 04-Ноя-25, 20:45 
>что многие боты запрашивают заранее предопределённый набор страниц и не передают Cookie, выставленные в ответ на прошлые запросы.

Передавать куки с помощью requests или httpx тривиально. Скрейпинг требует достаточной имитации браузера, включая полную поддержку экзотических схем сжатия и заголовков. Эта имитация всего лишь для душевного спокойствия тех дураков (часто не знаешь, из их числа админ, или нет, но иногда дураки себя маркируют, прямо в каждую страницу в футер вставляя угрозы судом тем, кто скачает данные), которые "ой, у меня в метриках аномалия, пойду всё анально огорожу" не понимающих, что их сайты всё равно отскрейпят, только оверхед будет больше. Статические ресурсы я обычно не качаю; качать их не приносит пользы ни мне, ни владельцам сайта.

В крайних случаях – Cloudflare или ситуации, когда прямо совсем нежелательно быть обнаруженным (например, при создании датасета для CAPTCHA не хотелось бы, чтобы вебмастер просто взял и сменил алгоритм) – можно использовать полноценный хром с расширением, которое выполняет весь скрейпинг и сбрасывает результаты на локальный веб-сервер, работающий на fastapi. Но плясать под клаудфларь дорого, унизительно и недостойно, я предпочитаю этого избегать. Идеальное решение по-прежнему: ссылки на дампы данных в футере сайта.

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

Ответить | Правка | Наверх | Cообщить модератору

7. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от Аноним (6), 07-Ноя-25, 11:26 
Владельцы сайтов не обязаны делать вам хорошо. Скорее это вы должны думать, как не делать им плохо. Потому что на самом деле не являетесь теми, для кого создается и наполняется сайт. Правильно было бы как-то платить за данные, если в дальнейшем из них извлекается какая-то прибыль.

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

Ответить | Правка | Наверх | Cообщить модератору

5. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от Аноним (6), 07-Ноя-25, 11:07 
Как время от времени скачивающий половину интернета человек, выскажусь на тему бесполезности.
В скрипте дописывается одна строчка с установкой этой куки, да и дело с концом.

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

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

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

Ответить | Правка | Наверх | Cообщить модератору

8. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от Аноним (8), 07-Ноя-25, 12:14 
Красить трафик стало вредно после экспансии хитрых NAT-ов и уползания ощутимого числа пользователей в VPN.

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

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

Ответить | Правка | Наверх | Cообщить модератору

9. "Отсеивание AI-ботов на web-сервере через Cookie"  +/
Сообщение от Аноним (6), 07-Ноя-25, 13:22 
Красить трафик != резать трафик. Смысл в том, чтобы обслуживать мусорный трафик в последнюю очередь с самым низким приоритетом.
Критерий наличия авторизации (и других признаков "естественности") очевидным образом снимает или ослабляет лимиты, даже если там один с ботами провайдер.

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

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

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

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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