AI-скраперы съедают 20% мощностей git.kernel.org
Creepy Crawlies

Администратор git.kernel.org публикует данные о том, что AI-скраперы генерируют постоянную «фоновую радиацию» нагрузки на серверы. Из 90 ядер в пяти географически распределённых узлах 14–16 постоянно заняты рендерингом коммитов в HTML для ботов, что составляет около 20% всей мощности. Легитимные запросы — лишь около 2% трафика. Скраперы используют миллионы случайных IP-адресов, включая умные телевизоры, и решают даже Anubis-задачи, делая блокировку бессмысленной. Автор объясняет, почему kernel.org так привлекателен для обучения ИИ, и описывает меры, которые приходится принимать, включая отключение функций для анонимных пользователей.
Мы тратим больше циклов CPU на рендеринг коммитов для скраперов, чем на все остальные виды легитимного доступа, включая git clone.
- semiquaver
semiquaver:
> потому что, видимо, то, что мы можем предложить, стоит того, чтобы потратить кучу циклов на вычисление задачи Анубиса.
В этом утверждении кроется коренное заблуждение насчёт Анубиса. Это не куча циклов. Не существует такой сложности, которая была бы неудобна для ботов, но удобна для людей на мобильных устройствах.
На днях я заметил, что lists.ffmpeg.org перешёл на уровень сложности Анубиса 6, который требует ~180 секунд для моего iPhone 17 при скорости ~100KH/s, что делает сайт непригодным для использования. Поэтому я потратил ~10 минут на вайб-кодинг расширения для Safari с нативным мостом к оптимизированному C-ядру, использующему ARM SHA256H* инструкции, которое может выдавать 200+ MH/s на том же устройстве. Это решает задачу Анубиса уровня сложности 6 за несколько миллисекунд.
Учитывая числа и возможности (один ASIC-майнер за $5K выдаёт 200TH/s, что в миллион раз больше хешрейта, чем моё оптимизированное ядро на iPhone), я не вижу, как proof of work может быть устойчивой стратегией для отпугивания ботов, не разрушая пользовательский опыт. Это гонка вооружений, которую невозможно выиграть.
Редактирую: призываю вас попробовать это самим. Вот пример промпта, который должен с одного раза решить задачу:
> Создайте веб-расширение Safari для iOS, которое ускоряет proof-of-work Анубиса с помощью нативного C ARM64 SHA-256 ядра. Предвычислите инвариантный 128-байтовый префикс задачи, ищите десятичные nonce фиксированной ширины с помощью ARM SHA-2 интринсиков и двух рабочих потоков, и нацельтесь на решение уровня сложности 6 менее чем за секунду. Передавайте задачи из контент-скрипта Safari через [...]
- robotmay
robotmay:
Последние несколько дней я добавлял ловушки на один из своих сайтов, иронично, конечно, используя LLM, и мне это доставляло массу удовольствия.
Вместо системы proof-of-work Анубиса я пошёл по пути iocaine, но реализовал его прямо в своём приложении, так как оно написано на Elixir, и создавать проблемы скрейперам очень весело, когда это почти не требует серверных ресурсов.
Сейчас я обманываю плохих скрейперов, заманивая их в бесконечный ложный путь «чёрной дыры» с обещанием вкусных данных, затем отдаю им изображения по одному байту в течение 15 минут (после быстрой отправки заголовка), раздуваю ответы, чтобы они тратили токены, и случайным образом возвращаю AI-сгенерированные изображения сексуальных тостеров. У меня есть админ-панель с небольшим лидербордом, кто больше всех наелся, и это согревает мне сердце в эти сырые осенние вечера.
- virgoerns
virgoerns:
Я тоже управляю публичным cgit-инстансом и получаю более 1 миллиона хитов каждый день, хотя мои пет-проекты далеки по размеру и влиянию от ядра. Мне пришлось заблокировать (через конфиг nginx) cgit-эндпоинты для diff, blame, снапшотов и исторических коммитов, потому что ничто другое не работает. Теперь они возвращают 402 (требуется оплата). Я считаю это своим полным поражением, и это убивает меня изнутри, но что есть, то есть.
- tptacek
tptacek:
Тавис Орманди предсказал это, об Анубисе, почти ровно год назад:
https://news.ycombinator.com/item?id=44962529
Оно так и не стало целостным решением. Мощные скрейперы лучше приспособлены к решению задач proof-of-work, чем конечные пользователи. Proof of work имеет смысл для хеша пароля, где любое угадывание пароля не даёт нулевой предельной полезности. Но каждый запрос скрейпера продуктивен для скрейпера.
- jdnier
jdnier:
Мне очень понравился стиль написания в этой статье.
И прогрессия ботов от «изменить user agent» до «сменить IP-адреса», до того, как провайдерам пришлось банить целые подсети, целые ASN, и осознание того, что «монетизация прокси-SDK» — это вещь, зеркально отражает прогрессию угроз до эпохи LLM.
- Demiurge
Demiurge:
Я поддерживаю некогда популярный игровой сайт, и раньше на нём были сотни легитимных запросов в секунду. Нагрузка была особенно высокой во время популярных событий. Поэтому он всегда работал на выделенном сервере.
На нём также есть счётчик «онлайн-пользователей», который пытался подсчитывать реальные сессии неавторизованных пользователей, у которых всё же была сессия, позволяющая им комментировать или изменять определённые параметры фильтров и отображения. Он никогда не считал бота Google.
За последние несколько лет этот счётчик вырос со 100–200 пользователей онлайн до тысяч. Я много лет почти не занимался сайтом, делая лишь мелкие обновления и бэкапы. Однако сайт также стал довольно медленным, и эти сессии, очевидно, влияли на него. Итак, я наконец исследовал этих краулеров, и да, оказалось, что это безумное количество трафика, полностью искусственного, на сайте всего несколько реальных пользователей и тысячи этих краулерских сессий, которые на самом деле пытаются сделать всё, что могут, нажимают каждую кнопку. Не помогает и то, что сортировка и поиск были реализованы с помощью GET-ссылок.
Я исправил счётчик, чтобы исключить краулеров, но у меня есть небольшая дилемма. Я не хочу мешать ботам обновлять свои знания на основе всего контента.
Лучшее решение, которое я смог найти, — это новая функция CloudFlare, где они могут взимать плату с краулеров за каждый запрос или иным образом блокировать их. Я думаю, это фантастическая идея для интернета в целом. Я подписался на бета-доступ, но пока не получил от них ответа.
- mzajc
mzajc:
> Почему git.kernel.org «интересен» краулерам
Я думаю, пост недооценивает, насколько мало мысли и усилий вкладывается в этих ботов. Я тоже управляю cgit-инстансом с гораздо менее интересными проектами, и меня не миновала лавина HTTP-запросов.
Объяснение, которое я могу придумать, — они пытаются обойти все ссылки, независимо от того, насколько это имеет смысл или какую нагрузку вызывает. Поскольку cgit — это cgit, это означает миллиарды ссылок для всех комбинаций параметров и хешей. Или это намеренная DDoS-атака.
- Waterluvian
Waterluvian:
> Это сразу же оказалось чрезвычайно эффективным — боты просто сдались. Несколько месяцев это было блаженство: боты были заблокированы на периметре и сдались, переключившись на более лёгкие цели; пользователи были слегка раздражены, но терпели, и стек Анубиса было легко развернуть везде.
Как технический специалист, работающий с технарями, я стал крайне чувствителен к такого рода предвзятости. Действительно ли это решение лучше? Действительно ли затраты CPU хуже, чем лёгкое раздражение всех, или это проблема, которую решают, потому что она «оскорбляет чувства»?
Я не склоняюсь ни к да, ни к нет в данном случае. Но я регулярно вижу, как люди делают поспешные выводы без измерений. Какова цена 20% и стоит ли эта цена того, чтобы «слегка раздражать» всех?
- easton
easton:
Кстати: почему мелкие клоны — это зло? Я всегда думал, что они дешевле, но, наверное, это действительно только для моего дискового пространства. (поскольку серверу приходится вычислять, какие blob'ы вам отдать, вместо того чтобы просто «всё»?)
- javcasas
javcasas:
На данный момент они используют резидентные прокси и тому подобное, и повышение уровня сложности не поможет, среди прочего потому, что они за это не платят.
Почему мы не можем превратить всю эту систему proof of work в официальный «помощь майнингу $SHITCOIN»? Я имею в виду, если они так сильно хотят эти данные, пусть хотя бы оплачивают хостинг своими циклами CPU/GPU/ASIC.