Назад к обновлениям
New releaseJul 25, 2026

miasma v0.4.0

Заманивайте AI-веб-скраперы в бесконечную ядовитую яму.

Поделиться

🌀 Miasma

No AI crates.io downloads Docker Pulls GitHub commits since latest release

Веб-краулеры застревают в облаке ядовитого миазма.

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

Miasma здесь, чтобы помочь вам дать отпор! Запустите сервер и направьте на него любой вредоносный трафик. Miasma будет отправлять отравленные обучающие данные из poison fountain вместе с множеством самореферентных ссылок. Это бесконечный шведский стол из мусора для мусорных машин.

Miasma молниеносно быстра и имеет минимальный объём памяти — вам не нужно тратить вычислительные ресурсы на отражение интернет-паразитов.

[!CAUTION] Развёртывание этого программного обеспечения сопряжено с неотъемлемым риском. Пожалуйста, полностью прочитайте конфигурацию и отказ от ответственности перед использованием.

Использование

Вы можете запустить Miasma локально или с официальным docker-образом.

Если вы хотите интегрировать Miasma в существующий Rust-сервер, вы также можете использовать Miasma как библиотеку.

Локальный запуск

Установите с помощью cargo (рекомендуется):

cargo install miasma

Либо скачайте готовый бинарник из releases.

Также доступны пакеты, поддерживаемые сообществом, для различных менеджеров пакетов:

Packaging status

Запустите Miasma с конфигурацией по умолчанию:

miasma

Просмотрите все доступные параметры конфигурации:

miasma --help

Запуск с Docker

Запустите Miasma с помощью официального docker-образа:

docker run --rm -p 9999:9999 austinweeks/miasma:latest

Передайте те же флаги конфигурации, которые вы использовали бы локально:

docker run --rm -p 9999:9999 austinweeks/miasma:latest \
    --link-prefix '/naughty-bots' \
    --max-in-flight 30

Или запустите в кластере docker compose:

services:
  miasma:
    image: austinweeks/miasma:latest
    command: ["--link-prefix", "/naughty-bots", "--max-in-flight", "30"]
    ports:
      - 9999:9999

Как ловить скраперов

Давайте рассмотрим пример настройки сервера для отлова скраперов с помощью Miasma. Мы выберем /naughty-bots в качестве пути нашего сервера для направления трафика скраперов. Мы будем использовать Nginx в качестве обратного прокси нашего сервера, но того же результата можно добиться и с множеством других конфигураций.

Когда мы закончим, скраперы будут пойманы следующим образом:

Блок-схема, изображающая цикл пойманных скраперов.

Встраивание скрытых ссылок

Внутри нашего сайта мы разместим несколько скрытых ссылок, ведущих на /naughty-bots.

<a
  href="https://github.com/austin-weeks/miasma/blob/main/naughty-bots"
  style="display: none;"
  aria-hidden="true"
  tabindex="-1"
>
  Amazing high quality data here!
</a>

Атрибуты style="display: none;", aria-hidden="true" и tabindex="-1" гарантируют, что ссылки полностью невидимы для людей-посетителей и будут игнорироваться программами чтения с экрана и навигацией с клавиатуры. Они будут видны только скраперам.

Настройка нашего Nginx-прокси

Поскольку наши скрытые ссылки указывают на /naughty-bots/, мы настроим этот путь для проксирования запросов в Miasma. Предположим, что мы запускаем Miasma на порту 9855.

Мы также настроим агрессивное ограничение скорости на основе user agent скрапера, чтобы помочь гарантировать, что мы случайно не устроим DDoS сами себе.

http {
  # Reserve 8MB memory for tracking user agents
  limit_req_zone $http_user_agent zone=miasma:8m rate=1r/s;

  server {
    location = /naughty-bots {
      port_in_redirect off;
      return 301 /naughty-bots/;
    }
    location /naughty-bots/ {
      # Rate limit via the 'miasma' zone with no queueing
      limit_req_status 429;
      limit_req zone=miasma burst=5 nodelay;

      # Proxy requests to Miasma
      proxy_pass http://localhost:9855/;
    }
  }
}

Эта конфигурация перехватит все варианты пути /naughty-bots -> /naughty-bots, /naughty-bots/, /naughty-bots/12345 и т. д.

Запуск Miasma

Наконец, мы запустим Miasma и укажем /naughty-bots в качестве префикса ссылок. Это указывает Miasma начинать ссылки с /naughty-bots/, что гарантирует правильную маршрутизацию скраперов через наш Nginx-прокси обратно в Miasma.

Давайте ограничим максимальное количество одновременных соединений до 50. При 50 соединениях мы можем ожидать пиковое потребление памяти 50-60 МБ. Обратите внимание, что любые запросы, превышающие этот лимит, немедленно получат ответ 429, а не будут добавлены в очередь.

Мы также заставим Miasma сжимать все ответы с помощью gzip независимо от заголовка Accept-Encoding скраперов. Поскольку gzip-сжатые ответы значительно меньше, это поможет нам сократить расходы на исходящий трафик.

Хотя мы могли бы держать скраперов в ловушке вечно, мы используем параметры количества ссылок и максимальной глубины, чтобы отпустить скраперов после того, как они поглотят ~100 тыс. отравленных страниц. С такой настройкой Miasma отправит около 250 МБ общих данных на каждого скрапера.

miasma --link-prefix '/naughty-bots' -p 9855 -c 50 --force-gzip --link-count 5 --max-depth 8

Наслаждайтесь!

Давайте развернём и понаблюдаем, как плохо ведущие себя боты жадно поедают из нашей бесконечной машины мусора!

robots.txt

Обязательно защитите хорошо ведущих себя ботов и поисковые системы от Miasma через ваш robots.txt!

User-agent: *
Disallow: /naughty-bots

Метрики

Miasma предоставляет возможность отслеживать количество запросов скраперов по каждому уникальному User-Agent. Это может быть полезно для определения того, какие боты наиболее интенсивно атакуют ваш сайт. Метрики записываются в локальный файл базы данных SQLite и могут быть просмотрены на выбранном вами эндпоинте.

Конфигурация

Miasma можно настроить с помощью флагов CLI или файла конфигурации.

Категории