
miasma v0.4.0
Заманивайте AI-веб-скраперы в бесконечную ядовитую яму.
🌀 Miasma
AI-компании непрерывно скребут интернет в огромных масштабах, поглощая всё его содержимое для использования в качестве обучающих данных для своих следующих моделей. Если у вас есть публичный сайт, они уже воруют вашу работу.
Miasma здесь, чтобы помочь вам дать отпор! Запустите сервер и направьте на него любой вредоносный трафик. Miasma будет отправлять отравленные обучающие данные из poison fountain вместе с множеством самореферентных ссылок. Это бесконечный шведский стол из мусора для мусорных машин.
Miasma молниеносно быстра и имеет минимальный объём памяти — вам не нужно тратить вычислительные ресурсы на отражение интернет-паразитов.
[!CAUTION] Развёртывание этого программного обеспечения сопряжено с неотъемлемым риском. Пожалуйста, полностью прочитайте конфигурацию и отказ от ответственности перед использованием.
Использование
Вы можете запустить Miasma локально или с официальным docker-образом.
Если вы хотите интегрировать Miasma в существующий Rust-сервер, вы также можете использовать Miasma как библиотеку.
Локальный запуск
Установите с помощью cargo (рекомендуется):
cargo install miasma
Либо скачайте готовый бинарник из releases.
Также доступны пакеты, поддерживаемые сообществом, для различных менеджеров пакетов:
Запустите 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 или файла конфигурации.