Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
miasma — Заманивайте AI-веб-скраперы в бесконечную ядовитую яму. | Kitploit
Инструменты/GitHubGitHub/austin-weeks/miasma
OSINT (Разведка открытых источников)Сбор информацииВеб-безопасностьКраулерАнти-БотБезопасность ИИ
GitHubaustin-weeks/miasma

miasma

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

Репозиторий
1.2k38417 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
# 🌀 Miasma

[![No AI](https://custom-icon-badges.demolab.com/badge/No%20AI-2f2f2f?logo=non-ai&logoColor=white&logoSize=auto)](#)
[![crates.io](https://img.shields.io/crates/v/miasma?logo=rust)](https://crates.io/crates/miasma)
[![downloads](https://img.shields.io/crates/dr/miasma?logo=rust)](https://crates.io/crates/miasma)
[![Docker Pulls](https://img.shields.io/docker/pulls/austinweeks/miasma)](https://hub.docker.com/r/austinweeks/miasma)
[![GitHub commits since latest release](https://img.shields.io/github/commits-since/austin-weeks/miasma/latest?logo=github)](#)

<picture>
  <img src="https://assets.kitploit.com/production/public/readmes/12808/53ea9eddbca68d25cbf4085762448c1cc10ee6fdf38bda837c6abf665a9d673f.png" alt="Веб-краулеры застревают в облаке ядовитого миазма." title="Cover art by @cerberussaturn07" />
</picture>

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

_Miasma_ здесь, чтобы помочь вам дать отпор! Запустите сервер и направьте на него любой вредоносный трафик. _Miasma_ будет отправлять отравленные обучающие данные из [poison fountain](https://rnsaffn.com/poison3) вместе с множеством самореферентных ссылок. Это бесконечный шведский стол из мусора для мусорных машин.

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

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

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

Вы можете запустить _Miasma_ локально или с официальным [docker-образом](https://hub.docker.com/r/austinweeks/miasma).

Если вы хотите интегрировать _Miasma_ в существующий Rust-сервер, вы также можете [использовать _Miasma_ как библиотеку](https://docs.rs/miasma/).

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

Установите с помощью [cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) (рекомендуется):

```sh
cargo install miasma
```

Либо скачайте готовый бинарник из [releases](https://github.com/austin-weeks/miasma/releases).

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

<a href="https://repology.org/project/miasma/versions">
    <img
        src="https://repology.org/badge/vertical-allrepos/miasma.svg?exclude_unsupported=1&amp;minversion=0.2"
        alt="Packaging status"
    >
</a>

<br>
<br>

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

```sh
miasma
```

Просмотрите все доступные [параметры конфигурации](#configuration):

```sh
miasma --help
```

### Запуск с Docker

Запустите _Miasma_ с помощью официального [docker-образа](https://hub.docker.com/r/austinweeks/miasma):

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

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

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

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

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

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

Давайте рассмотрим пример настройки сервера для отлова скраперов с помощью _Miasma_. Мы выберем `/naughty-bots` в качестве пути нашего сервера для направления трафика скраперов. Мы будем использовать [_Nginx_](https://nginx.org/) в качестве обратного прокси нашего сервера, но того же результата можно добиться и с множеством других конфигураций.

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

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/austin-weeks/miasma/main/.github/images/flow-chart-dark.png">
    <img height="425" src="https://assets.kitploit.com/production/public/readmes/12808/0fc56b18661aceabe968dff1a03545577f5a28691a3a4d20e096093919935ceb.png" alt="Блок-схема, изображающая цикл пойманных скраперов.">
  </picture>
</p>

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

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

```html
<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 сами себе.

```nginx
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 МБ** общих данных на каждого скрапера.

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

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

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

<p align="center">
  <picture>
    <img src="https://raw.githubusercontent.com/austin-weeks/miasma/main/.github/images/logs.gif" />
  </picture>
</p>

### `robots.txt`

Обязательно защитите хорошо ведущих себя ботов и поисковые системы от _Miasma_ через ваш [`robots.txt`](https://developers.google.com/search/docs/crawling-indexing/robots/intro)!

```text
User-agent: *
Disallow: /naughty-bots
```

## Метрики

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

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

_Miasma_ можно настроить с помощью флагов CLI или [файла конфигурации](https://github.com/austin-weeks/miasma/blob/main/docs/config_file).

| Опция               | По умолчанию                          | Описание                                                                                                                                                                                                                                                                |
| ------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `config-file`       |                                       | Загрузить параметры конфигурации из файла по указанному пути. Поддерживаются форматы YAML, TOML и JSON. Примеры см. в [docs](https://github.com/austin-weeks/miasma/blob/main/docs/config_file).                                                                                                                       |
| `port`              | `9999`                                | Порт, к которому должен привязаться сервер.                                                                                                                                                                                                                             |
| `host`              | `localhost`                           | Адрес хоста, к которому должен привязаться сервер.                                                                                                                                                                                                                      |
| `unix-socket`       |                                       | Привязаться к доменному сокету Unix вместо TCP-адреса. _Доступно только в Unix-подобных системах._                                                                                                                                                                      |
| `max-in-flight`     | `500`                                 | Максимальное допустимое количество одновременных запросов. Запросы, полученные при превышении этого лимита, получат ответ _429_. **_Потребление памяти Miasma напрямую масштабируется с количеством одновременных запросов — установите меньшее значение, если потребление памяти вызывает беспокойство._** |
| `link-prefix`       | `/`                                   | Префикс для самонаправляющих ссылок. Это должен быть путь, по которому вы размещаете _Miasma_, например `/naughty-bots`.                                                                                                                                                |
| `link-count`        | `5`                                   | Количество самонаправляющих ссылок, включаемых в каждую страницу ответа.                                                                                                                                                                                                |
| `max-depth`         | `none`                                | Прекратить генерацию ссылок, как только скрапер достигнет указанной глубины. Это позволяет отсечь скраперов после выдачи желаемого количества яда. _Используйте это вместе с `link-count`, чтобы удерживать количество активных скраперов на управляемом уровне._      |
| `force-gzip`        | `false`                               | Всегда сжимать ответы с помощью gzip независимо от заголовка _Accept-Encoding_ клиента. **Принудительное сжатие может помочь снизить расходы на исходящий трафик.**                                                                                                      |
| `unsafe-allow-html` | `false`                               | Не экранировать HTML-символы в ответах источника яда. Экранирование включено по умолчанию для предотвращения непреднамеренного выполнения клиентского JavaScript. **Используйте эту опцию с осторожностью.**                                                          |
| `poison-source`     | `https://rnsaffn.com/poison2/?mask=0` | Источник прокси для отравленных обучающих данных.                                                                                                                                                                                                                       |
| `no-poison-cache`   | `false`                               | Отключить кэширование ответов источника яда.                                                                                                                                                                                                                            |
| `metrics-db-path`   |                                       | Путь к файлу базы данных SQLite для хранения данных метрик. _Miasma_ создаст базу данных в этом месте, если она ещё не существует.                                                                                                                                      |
| `metrics-username`  |                                       | Имя пользователя для basic-аутентификации, необходимое для доступа к странице метрик _Miasma_.                                                                                                                                                                          |
| `metrics-password`  |                                       | Пароль для basic-аутентификации, необходимый для доступа к странице метрик _Miasma_.                                                                                                                                                                                    |
| `metrics-endpoint`  | `/metrics`                            | Эндпоинт, на котором будут обслуживаться метрики _Miasma_.                                                                                                                                                                                                              |

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

_Miasma_ не связана с [the poison fountain](https://rnsaffn.com/poison3). Мы не контролируем его ответы и не можем гарантировать безопасность его содержимого. Вы **_никогда_** не должны направлять пользователей на ваш адрес _Miasma_.

_Miasma_ не несёт ответственности за любые ответные действия со стороны операторов затронутых скраперов. Вы несёте ответственность за соблюдение применимых законов и политик хостинг-провайдеров. Полные сведения о гарантии и ограничении ответственности см. в [LICENSE](https://github.com/austin-weeks/miasma/blob/main/LICENSE) (GPL-v3).

---

_Обложка от [@cerberussaturn07](https://www.instagram.com/cerberussaturn07/)_
Скачать инструмент