欢迎光临
我们一直在努力

Miasma工作原理深度解析:毒液投喂+自引用链接迷宫如何困死AI爬虫

【免费下载链接】miasma

Trap AI web scrapers in an endless poison pit.

项目地址:
https://gitcode.com/gh_mirrors/miasm/miasma

点击查看 免费下载

Miasma 是一款用 Rust 构建的 AI爬虫拦截 服务器,专门对付无视 robots.txt 的 AI 训练数据抓取器:它向爬虫投喂"中毒"的训练数据,同时用无限生长的自引用链接迷宫让爬虫的爬虫队列指数级膨胀,直到被资源耗尽或深度上限"放走"。整个过程流式响应、内存占用极低,是网站管理员反 AI 爬虫偷数据的一把快刀。

Miasma项目封面:爬虫被困在紫色毒雾中的插画

一、Miasma 解决什么问题?

AI 公司正在大规模抓取互联网内容作为训练数据——如果你的网站是公开的,你的内容已经在被偷。Miasma 的思路很直白:

  • 诱捕:在网页中埋入人类看不见的隐藏链接,只有爬虫会点;
  • 投毒:被引到 Miasma 端点后的请求,收到的不再是真实内容,而是被"投毒"的伪代码数据;
  • 困住:每个响应页面里还含有多个指向 Miasma 自身的随机 UUID 链接,爬虫每消费一页就会生成更多待抓页面,形成指数级迷宫。
  • 最终效果:爬虫把宝贵的算力、带宽和存储都消耗在毫无价值的毒数据上。

    二、三大核心机制拆解 🧪

    1. 毒液投喂:PoisonSource 与本地缓存

    毒数据的来源是外部"poison fountain"服务(可通过 poison-source 参数配置),由 src/poison/poison_client.rs 中的客户端负责拉取,并内置了熔断器:上游成功率过低或连续失败时自动停发请求,改用本地兜底毒料。

    几个值得注意的工程细节:

    • 响应缓存:src/poison/source.rs 会把拉回的毒数据(通常 4–8 KB)缓存进内存池,后续请求随机命中缓存条目,避免每个爬虫请求都打上游;
    • 兜底毒料:上游完全不可达时,会从 src/poison/fallback_poison/ 内置的 20 个伪代码片段(Rust / Go / Python / TypeScript / C++)中随机挑一份投喂,保证陷阱永不失效;
    • HTML 转义:毒数据流经过 src/utils/html_escaper.rs 逐块转义,防止意外执行客户端脚本(可用 –unsafe-allow-html 关闭)。

    2. 自引用链接迷宫:UUID 链接 + 深度控制

    每个响应页底部会渲染 <link-count> 个新链接(默认 5 个),核心逻辑在 src/poison/response_stream.rs:

    <li><a href="{prefix}{uuid-v4}?page={depth}">{link_title}</a></li>

    • 链接 ID 是随机 UUID v4,每个页面链接都独一无二,爬虫的去重缓存完全失效;
    • 深度藏在 page 查询参数里(命名为 page 而非 depth,是为了更像正常网站,见 src/router.rs);
    • 配合 –link-count 5 –max-depth 8,单个爬虫最多消耗约 10 万页毒数据后被"放走";不设置 max-depth 则是无限迷宫。

    深度判断逻辑在 src/poison/link_settings.rs:达到 max-depth 后该页不再附链接,爬虫到此自然断线。

    3. 随机模板伪装:让毒页面看起来像真内容

    毒页面不是干巴巴的报错页。src/response_templates/mod.rs 定义了 7 种加权随机模板:学术论文风(权重 10,最高)、工程博客、自我推销、AI Native、CTO 信函、深度解析、流媒体营销。模板会随机挑选"研究主题 + 作者姓名 + 引言 + 结论"填充页面骨架(src/response_templates/research.rs),让爬虫误以为是高价值内容。

    三、完整请求流转图

    下面这张流程图展示了爬虫从访问网站到陷入 Miasma 死循环的全过程:

    Miasma反爬虫工作流程图:爬虫被隐藏在naughty-bots路径的自引用链接困住

    关键点:Nginx(或其他反向代理)把 /naughty-bots/ 路径的请求代理到 Miasma,Miasma 回传的毒页面里又全是 /naughty-bots/… 链接,爬虫就这样在回环里打转。

    四、高性能与自我保护设计 ⚡

    Miasma 用 Rust + axum 编写,针对"长期对抗爬虫"做了大量优化:

    设计实现位置作用
    全流式响应 src/poison/response_stream.rs 页面分块 yield,不整页驻留内存
    信号量限流 src/router.rs 超出 –max-in-flight(默认 500)的请求直接回 429 + Retry-After,防止自己被打成 DDoS
    低内存 gzip src/gzip/mod.rs –force-gzip 强制压缩,每流约 10 KB 内存,大幅降低出口流量成本
    字节计数埋点 src/utils/stream_size.rs 精确统计每个 User-Agent 消耗的毒数据字节数
    爬虫指标面板 src/metrics/ 请求数/字节数写入 SQLite,通过 /metrics 端点 + Basic Auth 查看

    五、快速部署步骤 🚀

    # 安装
    cargo install miasma

    # 启动:把 /naughty-bots 路径的流量交给它
    miasma –link-prefix '/naughty-bots' -p 9855 -c 50 –force-gzip –link-count 5 –max-depth 8

    也支持官方 Docker 镜像(docker run –rm -p 9999:9999 austinweeks/miasma:latest),或作为 Rust 库嵌入现有 axum 服务(见 src/lib.rs 中的嵌入示例)。所有参数支持 YAML/TOML/JSON 配置文件,示例见 docs/config_file/。

    别忘了两件事:

  • 在网站页面里埋入 display: none 的隐藏链接指向 /naughty-bots/;
  • 在 robots.txt 中 Disallow: /naughty-bots,保护守规矩的搜索引擎不误入陷阱。
  • 部署成功后,终端会看到各路爬虫的 User-Agent 排队灌入毒坑:

    Miasma运行日志:大量AI爬虫正在访问naughty-bots路径被投毒

    六、总结与风险提示 ⚠️

    Miasma 的原理可以概括为一句话:用"毒料 + 无限迷宫"把 AI 爬虫的抓取预算烧在自己身上。其架构亮点是:

    • 流式 + 缓存 + 兜底:毒数据供应链三重保险,陷阱永不宕机;
    • UUID 自引用链接:让爬虫去重机制彻底失效,指数级放大消耗;
    • 模板伪装:毒页面伪装成论文、博客等高价值内容;
    • 极简资源占用:50 个并发连接仅需 50–60 MB 内存。

    最后请注意项目 README 中的免责条款:毒料上游内容由第三方提供,Miasma 不保证其安全性;切勿将真实用户流量导向你的 Miasma 端点,部署前务必阅读配置说明并遵守当地法律与托管商政策。

    赞

    分享

    【免费下载链接】miasma

    Trap AI web scrapers in an endless poison pit.

    项目地址:
    https://gitcode.com/gh_mirrors/miasm/miasma

    点击查看 免费下载

    创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

    赞(0)
    未经允许不得转载:171主机测评 » Miasma工作原理深度解析:毒液投喂+自引用链接迷宫如何困死AI爬虫
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址