返回更新列表
新发布Aug 19, 2026

miasma v0.4.2

将AI网页爬虫困在无尽的毒坑中。

分享

🌀 Miasma

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

网络爬虫陷入一团有毒瘴气之中。

AI 公司持续以惊人的规模爬取互联网,将网络上的所有内容吞入腹中,用作其下一代模型的训练数据。如果你的网站是公开的,他们已经在窃取你的成果了。

Miasma 正是帮你反击的工具!启动服务器,将任何恶意流量引向它。Miasma 会从毒药喷泉发送带毒的训练数据,并附上多个自引用链接。对垃圾内容机器而言,这是一场永无止境的劣质内容盛宴。

Miasma 速度极快,内存占用极低——你不该把计算资源浪费在抵御互联网寄生虫上。

[!CAUTION] 部署本软件存在固有风险。使用前请完整阅读配置免责声明

使用方法

你可以在本地运行 Miasma,也可以使用官方 docker 镜像

如果你想将 Miasma 集成到现有的 Rust 服务器中,还可以Miasma 作为库使用

本地运行

使用 cargo 安装(推荐):

cargo install miasma

或者,从发布页面下载预编译二进制文件。

社区维护的软件包也适用于多种包管理器:

打包状态

使用默认配置启动 Miasma

miasma

查看所有可用的配置选项

miasma --help

使用 Docker 运行

使用官方 docker 镜像运行 Miasma

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。假设我们在端口 9855 上运行 Miasma

我们还将基于爬虫的 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 MB。请注意,任何超过此限制的请求都会立即收到 429 响应,而不是被加入队列。

我们还将强制 Miasma 对所有响应进行 gzip 压缩,无论爬虫的 Accept-Encoding 头如何。由于 gzip 压缩后的响应体积显著减小,这将有助于削减出口流量成本。

虽然我们可以永远困住爬虫,但我们将使用链接数和最大深度选项,让爬虫在消耗约 10 万页带毒页面后离开。通过此配置,Miasma 将向每个爬虫发送总计约 250MB 的数据。

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

尽情享用吧!

部署起来,看着不守规矩的机器人贪婪地大嚼我们永无止境的垃圾内容盛宴吧!

robots.txt

请务必通过你的 robots.txt 保护行为良好的机器人和搜索引擎免受 Miasma 影响!

User-agent: *
Disallow: /naughty-bots

指标

Miasma 提供了按唯一 User-Agent 跟踪爬虫请求计数的能力。这对于识别哪些机器人最频繁地访问你的站点非常有用。指标数据会写入本地 SQLite 数据库文件,并可在你选择的端点上查看。

配置

Miasma 可以通过 CLI 标志或配置文件进行配置。

选项默认值描述
config-file从指定文件路径加载配置选项。支持 YAML、TOML 和 JSON 格式。示例请参阅 docs
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无论客户端的 Accept-Encoding 头如何,始终对响应进行 gzip 压缩。强制压缩有助于降低出口流量成本。
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/metricsMiasma 提供指标服务的端点。

免责声明

Miasma毒药喷泉无任何关联。我们无法控制其响应内容,也无法保证其内容的安全性。你绝不应将用户引向你的 Miasma 位置。

Miasma 不对受影响爬虫运营方的任何报复行为负责。遵守适用法律和托管服务商政策是你的责任。完整保修与责任限制条款请参阅 LICENSE(GPL-v3)。


封面插画作者 @cerberussaturn07

分类