- PVSM.RU - https://www.pvsm.ru -

Zip-бомбы против агрессивных ИИ-краулеров

Zip-бомбы против агрессивных ИИ-краулеров - 1

Некоторые владельцы сайтов жалуются [1] на большое количество ботов, которые создают нагрузку на серверы, особенно краулеры для LLM (ИИ). По информации аналитического отчёта Fastly [2], краулеры, скраперы и фетчеры иногда создают нагрузку на сайт до 39 тыс. запросов в минуту.

В 2025 году нагрузка от скраперов выросла на 87% [3], причём основной трафик идёт от RAG [4]-скраперов, а не для первичного обучения моделей.


Сейчас ИИ-краулеры генерируют около 80% всего трафика ИИ-ботов в интернете. Всего 20% приходится на фетчеры, но они ответственны за серьёзные пиковые нагрузки. Например, ClaudeBot компании Anthropic отправил миллион запросов за сутки [5] к сайту с техническими инструкциями iFixit.com и 3,5 млн запросов за четыре часа [6] к Freelancer.com.

Изменение объёма запросов от ведущих ИИ-краулеров. Источник: отчёт Fastly

Изменение объёма запросов от ведущих ИИ-краулеров. Источник: отчёт Fastly

Среди всех ботов одним из самых назойливых является краулер Facebook [7] (признана экстремистской организацией в РФ):

Этот бот даже периодически меняет user-agent (после блокировки предыдущего).

Боты Perplexity AI замечены [8] в выходе за диапазон официальных IP-адресов [9] и игнорировании директивы robots.txt.

Zip-бомбы против агрессивных ИИ-краулеров - 3

Защита от краулеров

Традиционно против ботов используется комбинация нескольких методов, включая ограничение на количество запросов [10] и капчи [11] — задачи, сложные для компьютеров, но тривиальные для людей, фильтрация по user-agent и др.

Есть и более креативные решения. Например, система Anubis [12] проверяет все входящие HTTP-соединения и заставляет выполнить на клиенте определённую вычислительную задачу SHA-256 [13]:

    calcString := fmt.Sprintf("%s%d", challenge, nonce)
    calculated := internal.SHA256sum(calcString)

    if subtle.ConstantTimeCompare([]byte(response), []byte(calculated)) != 1 {
        // ...
    }

    // compare the leading zeroes
    if !strings.HasPrefix(response, strings.Repeat("0", rule.Challenge.Difficulty)) {
        // ...
    }

Эта задача похожа на те, что выполняют вредоносные биткоин-майнеры. Сами разработчики вдохновлялись популярной антиспамерской системой Hashcash [14] из 90-х.

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

У проекта Anubis 13 тыс. звёзд на Github, что косвенно указывает на количество сайтов под его защитой

У проекта Anubis 13 тыс. звёзд на Github, что косвенно указывает на количество сайтов под его защитой

Но критики подобного подхода подсчитали, что такая нагрузка является несущественной [15], а защита к тому же легко обходится.

Среди других защитных вариантов — распознавание крауеров (фингерпринтинг) по некоторым характерным признакам, таким как user-agent от старых браузеров [16] или отказ принимать сжатые файлы [17], чтобы уберечься от zip-бомб.

Zip-бомбы

В последнее для защиты от агрессивных ИИ-краулеров стали активно использоваться zip-бомбы [18], которые истощают оперативную память в дата-центре краулера. Это может быть стандартный архив размером 10 МБ, который распаковывается в 10 ГБ [19]:

$ dd if=/dev/zero bs=1M count=10240 | gzip -9 > 10G.gzip

Или валидный HTML:

#!/bin/fish

# Base HTML
echo -n '<!DOCTYPE html><html lang=en><head><meta charset=utf-8><title>Projet: Valid HTML bomb</title><meta name=fediverse:creator content=@ache@mastodon.xyz><link rel=canonical href=https://ache.one/bomb.html><!--'

# Create a file filled with H
echo -n (string repeat --count 258 'H') >/tmp/H_258

# Lots of H
for i in (seq 507)
    # Concat H_258 with itself  times
    cat (yes /tmp/H_258 | head --lines=81925)
end

cat (yes /tmp/H_258 | head --lines=81924)

# End of HTML comment and body tag
echo -n "--><body><p>This is a HTML valid bomb, cf. https://ache.one/articles/html_zip_bomb</p></body>"

...со сжатием 1:1030:

$ fish zip_bomb.fish | gzip -9 > bomb.html.gz
$ du -sb bomb.html.gz
10180	bomb.html.gz

Обычные краулеры защищены от таких бомб, потому что страница с бомбой запрещена к посещению в robots.txt.

Поскольку обычные браузеры вроде Chrome и Firefox тоже выходят из строя при попытке отобразить такой HTML, на него не ставят прямых ссылок с веб-страниц, чтобы живые пользователи не зашли туда по ошибке. Такая страница доступна только для ИИ-ботов.

По мнению [17] некоторых активистов, на эффективность zip-бомб указывает тот факт, что разработчики краулеров пытаются уберечься через запрет на получение zip-контента. В свою очередь, такие директивы — один из признаков вредоносных краулеров, то есть она полезна для фингерпринтинга.

В качестве дополнительной нагрузки на клиента некоторые веб-мастеры предлагают такой вариант [20]:

(echo '<html><head></head><body>' && yes "<div>") | dd bs=1M count=10240 iflag=fullblock | gzip > bomb.html.gz

Хотя такая защита наносит вред экологии веба [21], некоторые веб-мастеры всё равно применяют их в условиях, когда боты генерируют более 50% нагрузки на серверы. Если старые поисковые боты соблюдают директивы, то новые ИИ-краулеры иногда ведут себя более деструктивно. Например, один веб-мастер показал графики из системы аналитики, как краулер GPTBot от OpenAI израсходовал 30 ТБ трафика [22] на его тарифном плане за месяц, то есть все его файлы общим объёмом 600 МБ были выкачаны примерно 50 тыс. раз:

Zip-бомбы против агрессивных ИИ-краулеров - 5

Во время визита краулеров нагрузка на серверные CPU возрастает в несколько раз [23]:

Zip-бомбы против агрессивных ИИ-краулеров - 6

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

Неэтичное поведение ИИ-краулеров, которые игнорируют robots.txt, приводится некоторыми веб-мастерами как оправдание для применения деструктивных мер защиты.

Автор: GlobalSign_admin

Источник [24]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/zip-bomba/432708

Ссылки в тексте:

[1] жалуются: https://utcc.utoronto.ca/~cks/space/blog/web/WebIsKindOfFragile

[2] аналитического отчёта Fastly: https://learn.fastly.com/rs/025-XKO-469/images/Fastly-Threat-Insights-Report.pdf

[3] выросла на 87%: https://tollbit.com/bots/25q1/

[4] RAG: https://aws.amazon.com/what-is/retrieval-augmented-generation/

[5] миллион запросов за сутки: https://x.com/kwiens/status/1816128302542905620

[6] 3,5 млн запросов за четыре часа: https://www.ft.com/content/07611b74-3d69-4579-9089-f2fc2af61baa

[7] краулер Facebook: https://x.com/croloris/status/1962506451718397977

[8] замечены: https://blog.cloudflare.com/perplexity-is-using-stealth-undeclared-crawlers-to-evade-website-no-crawl-directives/

[9] официальных IP-адресов: https://docs.perplexity.ai/guides/bots

[10] ограничение на количество запросов: https://en.wikipedia.org/wiki/Rate_limiting

[11] капчи: https://en.wikipedia.org/wiki/Captcha

[12] Anubis: https://anubis.techaro.lol/

[13] определённую вычислительную задачу SHA-256: https://github.com/TecharoHQ/anubis/blob/e8dfff635015d6c906dddd49cb0eaf591326092a/lib/challenge/proofofwork/proofofwork.go#L66

[14] Hashcash: http://hashcash.org/

[15] является несущественной: https://lock.cmpxchg8b.com/anubis.html

[16] user-agent от старых браузеров: https://utcc.utoronto.ca/~cks/space/blog/web/OldBrowsersCrawlerProblem

[17] отказ принимать сжатые файлы: https://come-from.mad-scientist.club/@algernon/statuses/01K2M0DYZJVM4ADAG09AYQY5P9

[18] zip-бомбы: https://ache.one/notes/html_zip_bomb

[19] стандартный архив размером 10 МБ, который распаковывается в 10 ГБ: https://idiallo.com/blog/zipbomb-protection

[20] такой вариант: https://news.ycombinator.com/item?id=44673251

[21] наносит вред экологии веба: https://mstdn.social/@jschauma/115055997570719010

[22] израсходовал 30 ТБ трафика: https://www.reddit.com/r/CloudFlare/comments/1jp8mv8/do_turn_on_block_ai_bots_or_make_a_robotstxt_if/

[23] возрастает в несколько раз: https://github.com/coollabsio/coolify/issues/2110

[24] Источник: https://habr.com/ru/companies/globalsign/articles/953654/?utm_source=habrahabr&utm_medium=rss&utm_campaign=953654