
miasma v0.4.2
将AI网页爬虫困在无尽的毒坑中。
🌀 Miasma
AI 公司持续以惊人的规模爬取互联网,将网络上的所有内容吞入腹中,用作其下一代模型的训练数据。如果你的网站是公开的,他们已经在窃取你的成果了。
Miasma 正是帮你反击的工具!启动服务器,将任何恶意流量引向它。Miasma 会从毒药喷泉发送带毒的训练数据,并附上多个自引用链接。对垃圾内容机器而言,这是一场永无止境的劣质内容盛宴。
Miasma 速度极快,内存占用极低——你不该把计算资源浪费在抵御互联网寄生虫上。
使用方法
你可以在本地运行 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。 | |
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 | 无论客户端的 Accept-Encoding 头如何,始终对响应进行 gzip 压缩。强制压缩有助于降低出口流量成本。 |
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 | 访问 Miasma 指标页面所需的基本认证用户名。 | |
metrics-password | 访问 Miasma 指标页面所需的基本认证密码。 | |
metrics-endpoint | /metrics | Miasma 提供指标服务的端点。 |
免责声明
Miasma 与毒药喷泉无任何关联。我们无法控制其响应内容,也无法保证其内容的安全性。你绝不应将用户引向你的 Miasma 位置。
Miasma 不对受影响爬虫运营方的任何报复行为负责。遵守适用法律和托管服务商政策是你的责任。完整保修与责任限制条款请参阅 LICENSE(GPL-v3)。
封面插画作者 @cerberussaturn07