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

miasma v0.4.0

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

Поделиться

🌀 Miasma

No AI crates.io downloads Release GitHub commits since latest release

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

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

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

Miasma молниеносно быстр и потребляет минимум памяти — вам не придётся тратить вычислительные ресурсы, защищаясь от интернет-пиявок.

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

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

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

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

Запуск локально

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

cargo install miasma

Кроме того, вы можете скачать готовый бинарный файл из релизов.

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

Статус упаковки

Запустите 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="/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 скраперов. Поскольку сжатые ответы значительно меньше, это поможет нам сократить расходы на исходящий трафик.

Хотя мы могли бы держать скраперов в ловушке вечно, мы будем использовать параметры количества ссылок и максимальной глубины, чтобы отпустить скраперов после того, как они потребят ~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 или файла конфигурации.

ПараметрПо умолчаниюОписание
config-fileЗагружает параметры конфигурации из файла по указанному пути. Поддерживаются форматы YAML, TOML и JSON. Примеры см. в документации.
port9999Порт, к которому должен привязываться сервер.
hostlocalhostАдрес хоста, к которому должен привязываться сервер.
unix-socketПривязка к доменному сокету Unix вместо TCP-адреса. Доступно только в Unix-подобных системах.
max-in-flight500Максимальное количество допустимых одновременных запросов. Запросы, полученные при превышении лимита, получат ответ 429. Использование памяти Miasma напрямую зависит от количества одновременных запросов — установите более низкое значение, если потребление памяти вызывает беспокойство.
link-prefix/Префикс для самонаправляющих ссылок. Это должен быть путь, по которому размещён Miasma, например /naughty-bots.
link-count5Количество самонаправляющих ссылок для включения в каждую страницу ответа.
max-depthnoneПрекратить генерацию ссылок после того, как скрапер достигнет указанной глубины. Это позволяет отсечь скраперов после выдачи желаемого количества отравленных данных. Используйте вместе с link-count, чтобы поддерживать количество активных скраперов на управляемом уровне.
force-gzipfalseВсегда сжимать ответы с помощью gzip независимо от заголовка Accept-Encoding клиента. Принудительное сжатие может помочь снизить расходы на исходящий трафик.
unsafe-allow-htmlfalseНе экранировать HTML-символы в ответах источника отравленных данных. Экранирование включено по умолчанию для предотвращения непреднамеренного выполнения клиентского JavaScript. Используйте эту опцию с осторожностью.
poison-sourcehttps://rnsaffn.com/poison2/?mask=0Прокси-источник отравленных обучающих данных.
no-poison-cachefalseОтключить кэширование ответов источника отравленных данных.
metrics-db-pathПуть к файлу базы данных SQLite для хранения данных метрик. Miasma создаст базу данных по этому пути, если её ещё не существует.
metrics-usernameИмя пользователя для базовой аутентификации, необходимое для доступа к странице метрик Miasma.
metrics-passwordПароль для базовой аутентификации, необходимый для доступа к странице метрик Miasma.
metrics-endpoint/metricsКонечная точка, по которой будут обслуживаться метрики Miasma.

Отказ от ответственности

Miasma не связан с poison fountain. Мы не контролируем его ответы и не можем гарантировать безопасность его содержимого. Вам никогда не следует направлять пользователей на ваш Miasma.

Miasma не несёт ответственности за какие-либо ответные меры со стороны операторов затронутых скраперов. Ответственность за соблюдение применимых законов и политик хостинг-провайдера лежит на вас. См. LICENSE (GPL-v3) для получения полной информации о гарантиях и ограничении ответственности.


Обложка от @cerberussaturn07

Категории