DDoS-атаки становятся масштабнее и опаснее. О «самом-самом» расскажем 13 февраля, а сегодня поговорим о новом явлении. В последнее время некоторые боты-сборщики данных для обучения LLM, «используют содержимое веб-сайтов, но делают это без уважения».
Рассказываем о проектах, пострадавших от излишнего внимания ИИ-краулеров, и о том, как изменились сайты с их появлением. А также приведем пару примеров «партизанской» защиты от ботов, которым robots.txt — не указ.
DDoS-атака на весь интернет
Деннис Шуберт, веб-инженер в Mozilla, по совместительству 11 лет проработавший над проектом diaspora*, в прошлом месяце опубликовал пост, который быстро стал вирусным и всё ещё широко обсуждается. В нём Шуберт обрушился с критикой на ботов-краулеров, собирающих данные для обучения LLM — выяснилось, что в последнее время они генерировали подавляющее большинство запросов к некоторым страницам diaspora*, вызывая повышенную нагрузку на инфраструктуру и замедляя работу социальной сети. По словам Денниса, 70% всей работы его сервера сводилось к обслуживанию краулеров, которые не просто однократно собирали данные, а возвращались добирать контент каждые 6 часов:
Вишенка на торте: для краулинга они выбирали самые нелепые страницы из возможных. Недавно и ChatGPT, и бот Amazon отсматривали всю историю правок к вики проекта. Буквально: индексировали каждое изменение на каждой странице за все время её существования — нередко с пиками до 10 запросов в секунду
«Это DDoS-атака на весь интернет», — грустно заключает разработчик, которого активно поддерживают и в diaspora*, и в других тематических сообществах. Но его кейс — далеко не единственный: похоже, что агрессивные краулеры становятся «общим местом» в сети, и сильнее всех от них страдают относительно небольшие компании.
Немногим ранее аналогичную «атаку ботов» пережил проект Game UI Database. Этот онлайн-каталог интерфейсов к видеоиграм особенно приглянулся краулерам OpenAI, поскольку содержит большую базу изображений, уже размеченных рукой человека. Из-за наплыва ботов страницы стали загружаться втрое дольше обычного, пользователи получали сообщения об ошибке 502 (Bad Gateway), а главная страница перезагружалась по 200 раз за секунду. Создатель Game UI Database Эдд Коутс с сожалением отмечает, что ситуация не исчерпывается разовым инцидентом с OpenAI: ИИ-гиганты такими действиями могут запросто похоронить небольшие интернет-проекты.
С такими выводами согласен Роберто ди Космо, руководитель некоммерческой организации Software Heritage. Её целью является сбор, хранение и распространение исходного кода ПО, находящегося в публичном доступе, как части культурного наследия человечества. В прошлом году он также столкнулся с нашествием ИИ-краулеров, в результате которого команде пришлось работать в авральном режиме, а сайт был некоторое время недоступен ряду «живых» пользователей.
Несмотря на поддержку ЮНЕСКО, у проекта не так уж много возможностей выдержать подобную активность: «Мы — не Google, наши ресурсы ограничены». Несмотря на то, что в Software Heritage поддерживают развитие ИИ-алгоритмов в целом, Роберто называет современные способы получения данных для LLM «безответственными».
«Неуважительным» считают поведение ботов-краулеров и сотрудники Read The Docs — платформы для размещения технической документации проектов с открытым исходным кодом. В прошлом году она также столкнулась с «ИИ-вторжением». В мае 2024 всего один краулер загрузил больше семидесяти терабайт заархивированных HTML-файлов — из них десять терабайт за один день. Всему виной недоработки в реализации ИИ-бота: он не учитывал заголовки Etag и Last-Modified, поэтому раз за разом скачивал одни и те же файлы. Злую шутку сыграли и особенности маршрутизации на платформе Read The Docs. Все запросы поступали на старый URL, который перенаправлял на ресурс без CDN.
Помимо нагрузки на инфраструктуру, ИИ-боты «сбивают настройки» компаниям, продающим товары и размещающим рекламу в интернете. По данным DV Fraud Lab (подразделение компании DoubleVerify, развивающей аналитические инструменты для бизнеса), уровень базового (общего) невалидного трафика (General Invalid Traffic, GIVT) во второй половине прошлого года вырос на 86% по сравнению с аналогичным периодом в 2023-м — и этот рост непосредственно связан с распространением ИИ-краулеров.
Несмотря на то, что (в отличие от сложного невалидного трафика, Sophisticated Invalid Traffic, SIVT) сам по себе GIVT не связан с намеренной вредоносной деятельностью, он может создать много проблем. Он искажает данные о результатах рекламных кампаний, «раздувает» метрики показов и в целом ведёт к разного рода статистическим расхождениям. Одним словом, у проектов, которые зависят от интернет-рекламы, тоже есть причина недолюбливать ботов-сборщиков данных для LLM.
Решение: robots.txt
Само собой, рост числа краулеров и их агрессивные методы сбора информации не могут не вызывать противодействие. Как отмечают в Read the Docs, ситуация с особенно «неуважительными» сборщиками бросает тень на весь сектор ИИ-ботов — и компаниям приходится принимать ответные меры.
Дэвид Сенекаль, ведущий архитектор антифрод-систем в Akamai, считает, что лучшим способом защиты от нежелательного краулинга все еще остаётся разработанный в 1990-х стандарт исключений для роботов и сопутствующий ему файл robots.txt. Он хранится в корне сайта и содержит список инструкций для поисковых роботов: какие страницы индексировать можно, а какие — нельзя. И компании действительно начали использовать его более активно.
Этот факт подтверждает исследование, которое в прошлом году провели представители организации Data Provenance Initiative. Авторы анализировали данные из датасетов RefinedWeb, C4 и Dolma, сформированных специально для обучения и дообучения моделей искусственного интеллекта. Они включают тексты с широкого спектра веб-сайтов, таких как научные ресурсы, новостные порталы и технические блоги. Но в рамках анализа поведения компаний по отношению к ИИ-краулерам была проанализирована только узкая выборка из датасета C4. В неё вошли порядка двух тысяч наиболее крупных и популярных у дата-сайентистов доменов.
Авторы проанализировали долгосрочные изменения в наполнении сайтов в промежутке между январем 2016 и апрелем 2024 года. Особое внимание уделялось разделам robots.txt и пользовательским соглашениям (Terms of Service). Если в 2016 году у 20% сайтов в выборке вообще не было robots.txt, то к прошлому году число таких веб-ресурсов сократилось практически до нуля. Аналогично 80% сайтов в 2016 году не имели раздела Terms of Service. В 2024 их доля составляет менее 10% — организации используют оба инструмента для ограничения доступа к своим данным. И при этом стараются действовать оперативно — взрывной рост запретов на индексацию роботами всего содержимого сайта наблюдается с середины 2023 года, сразу после запуска GPTBot.
При этом на словах компании-разработчики ИИ-систем полностью поддерживают такую практику и уважают robots.txt. Например, представитель Open AI, комментируя ситуацию с Game UI Database, подчеркнул, что «организациям, публикующим данные в интернете, легко покинуть нашу экосистему и выразить свои предпочтения о том, как их сайты и контент должны взаимодействовать с нашими продуктами», а также отметил, что OpenAI старается быть «внимательной» и «тактичной» по отношению к другим веб-проектам. Представительница Anthropic, в свою очередь, рассказала о стремлении компании сделать процесс сбора данных «прозрачным и ненавязчивым». И всё бы хорошо, но…
На самом деле никому нет дела до robots.txt
Robots.txt — хоть и популярное, но, к сожалению, далеко не идеальное решение. В первую очередь потому, что стандарт исключений для роботов (Robots Exclusion Protocol) создавался в то время, когда ни о каких ИИ-ботах в их современном виде не было и речи. Один из важных минусов robots.txt — тот факт, что список ботов, которым запрещено собирать данные, нужно пополнять вручную. В результате «под раздачу» обычно попадают широко известные краулеры, в то время как менее популярные продолжают делать свою работу.
Специалисты Data Provenance Initiative подсчитали, что, если компании прописывают запрет на краулинг, боты OpenAI и Common Crawl появляются в списках в 91,5% и 83,4% случаев соответственно. С другой стороны, ботов Cohere и Meta можно встретить в robots.txt гораздо реже. Отчасти это происходит потому, что администраторы сайтов могут не знать о новых краулерах или просто не имеют возможности достаточно часто обновлять robots.txt.
А кто-то при составлении списков может допустить ошибку или попасться на уловки недобросовестных разработчиков — в том же исследовании отмечалось, что 4,5% сайтов, попавших в выборку, запрещали краулинг ботам Anthropic-AI или Claude-WEB (которые не имеют отношения к Anthropic), но при этом не блокировали работу настоящего краулера компании, ClaudeBot. Учитывая схожие названия, речь может идти о ботах, которые намеренно выдают себя за продукты Anthropic — так считает Дэвид Сенекаль. Он замечает, что наличие таких «ботов-самозванцев» дополнительно усложняет работу по составлению robots.txt.
Но главное, что подчёркивают эксперты: для корректной работы robots.txt нужно, чтобы боты были готовы добровольно подчиняться запретам. А с этим, похоже, есть большие проблемы. Ещё полгода назад в СМИ заговорили о том, что и «тактичная» OpenAI, и «ненавязчивая» Anthropic обходят или попросту игнорируют robots.txt. Что подтверждают и веб-разработчики: Деннис Шуберт в заметке о diaspora* не стесняясь в выражениях разносит ботов за полное пренебрежение инструкциями.
Как справедливо замечают в Data Provenance Initiative, раздел Terms of Service как раз-таки является юридически значимым соглашением между сайтом и его пользователями. Поэтому если на сайте организации он присутствует и при этом соответствует по смыслу и содержанию документу robots.txt, у организации, в теории, может появиться основание заявить о нарушении со стороны ИИ-компаний. Другое дело, что добиться соответствия между человеко-ориентированным Terms of Service и машиночитаемым robots.txt очень непросто, особенно учитывая негибкую структуру последнего, изначально совершенно не рассчитанную на подобные задачи.
Так или иначе, для большинства организаций robots.txt остаётся не более, чем джентльменским соглашением, которое ИИ-боты со своей стороны совсем не стремятся соблюдать. Но для тех, кто хочет защитить свой сайт от агрессивного сбора данных и решил все же не пренебрегать robots.txt, есть пополняемый список веб-краулеров, ассоциированных с ИИ-компаниями.
Защита от ботов: план Б
Поскольку robots.txt остаётся не более, чем рекомендацией, неудивительно, что недобросовестные ИИ-разработчики игнорируют пожелания веб-мастеров. Возможны и банальные ошибки в реализации краулеров, которые выливаются в непреднамеренные DDoS-атаки — малые проекты, развернутые на условных домашних серверах, попросту не способны им противостоять.
В ответ в сети появляются решения, способные заставить ИИ-ботов или следовать правилам, прописанным в robots.txt, или даже «отравить» (poison) данные на сайте, сделав их бесполезными для дальнейшего обучения моделей. Вот лишь некоторые из них:
.htaccess
Метод подразумевает сбор известных имен краулеров и модификацию правила mod_rewrite в файле .htaccess. Например, разработчик Итан Маркотт в своем блоге приводит пример собственной конфигурации:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# block “AI” bots
RewriteCond %{HTTP_USER_AGENT} (AdsBot-Google|Amazonbot|anthropic-ai|Applebot|Applebot-Extended|AwarioRssBot|AwarioSmartBot|Bytespider|CCBot|ChatGPT|ChatGPT-User|Claude-Web|ClaudeBot|cohere-ai|DataForSeoBot|Diffbot|FacebookBot|Google-Extended|GPTBot|ImagesiftBot|magpie-crawler|omgili|Omgilibot|peer39_crawler|PerplexityBot|YouBot) [NC]
RewriteRule ^ – [F]
</IfModule>
Провернуть аналогичный сценарий можно и с помощью nginx. Достаточно конвертировать файл .htaccess в nginx.conf с последующей настройкой необходимых блокировок.
Утилита «подсовывает» ботам, игнорирующим robots.txt, фейковый контент. Специальный генератор текста на основе цепей Маркова модифицирует порядка 20% слов на странице, преобразует изображения и готовит некорректные описания к ним. В паре с Quixotic можно использовать веб-сервер linkmaze, который на лету генерирует веб-страницы с белибердой.
Инструмент формирует README-файлы для несуществующих программных проектов. Он написан на языке Baba, заточенном под создание генераторов случайного текста. Вот пример из демо для выдуманного проекта git-shave-packshaves:
git-shave-packshaves captured downstream packs from most parsed interfaces, indexes objects, etc.
В целом проект сам по себе он не мешает работе ИИ-ботов, но теоретически может быть использован аналогично Quixotic.
Другие предлагают специально перенаправлять краулеров на загрузку тяжёлых файлов весом в десятки гигабайт. Однако такие решения трудно рекомендовать к применению: они создают дополнительную нагрузку на интернет-провайдеров и дата-центры (мощностей которых и без того не хватает). Тем не менее, учитывая «настойчивость» ИИ-ботов, мотивация сторонников таких методов вполне понятна.
Что будет дальше
Сейчас боты «прочёсывают» сайты, выискивая даже самые незначительные изменения. Такой топорный подход приводит к массовому накоплению данных-дублей, которые захламляют хранилища и сетевую инфраструктуру. Эксперты сходятся во мнении: подобные методы не только расточительны, но и попросту неэффективны. Однако, как отмечает Дэвид Сенекаль, до тех пор, пока не изменится общий взгляд на управление данными, а технологии хранения и обмена информацией не станут более совершенными, скрейпинг, краулеры и связанные с ними проблемы продолжать быть частью нашей реальности.
Специалисты из Data Provenance Initiative настроены более оптимистично — они считают, что «вольница ИИ-ботов» подходит к концу: все чаще звучат обвинения в недобросовестном поведении краулеров, и все большее число компаний начинает «закрываться» от них любыми доступными способами. Возможно, в ближайшие годы мы увидим и совершенствование robots.txt или появление другого индустриального стандарта, адаптированного к новой реальности.
Наконец, меняется и защита от всех видов отказов в обслуживании. О рекомендациях по защите рассказываем здесь.
Комментарии (3)
ulisma
02.02.2025 15:54nginx conf надо еще прописать, чтобы отдавал 403. И регулярку на названия ботов.
Хотя бы так.
A_L_I_E_N
02.02.2025 15:54map $http_user_agent $bad_bot { default 0; ~*(AltaVista|Slurp|BlackWidow|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker|ua_bot|Amazonbot) 1; ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|GrabNet|Grafula|Go!Zilla|Go-Ahead-Got-It|DuckDuckGo-Favicons-Bot|DuckDuckGo-Bot) 1; ~*(HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE|my-tiny-bot|thesis-research-bot) 1; ~*(NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider|GeedoBot) 1; ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus|GPTBot) 1; ~*(Twengabot|htmlparser|libwww|Python|urllib|Curl|PycURL|Pyth|WebCollector|WebCopy|webcraw|AspiegelBot|MegaIndex|Copier|netvampire|DISCo|Applebot|AhrefsBot) 1; ~*(bingbot|DotBot|Barkrowler|YandexMetrika|YandexMarket|YandexVideo|YandexBot|YandexImage|YandexCalendar|YandexMobileBot|YandexAdNet|YandexAccessibilityBot) 1; ~*(YandexBlogs|YandexDirect|Ahrefs|SputnikBot|spbot|DigExt|Sogou|MJ12|majestic12|80legs|SISTRIX|Semrush|Crowsnest|CCBot|TalkTalk|PaperLiBot|peerindex|ia_archiver) 1; ~*(Slurp|Aport|NING|JS-Kit|rogerbot|BLEXBot|MJ12bot|Twiceler|Baiduspider|CommentReader|Yeti|discobot|BTWebClient|Tagoobot|Ezooms|igdeSpyder|AhrefsBot) 1; }
if ($bad_bot) { return 403; }
koreychenko
А как у ИИ ботов обстоят дела с zip-бомбами? :-)