乐于分享
好东西不私藏

Miasma:往AI爬虫嘴里灌毒的新工具,HN爆了

Miasma:往AI爬虫嘴里灌毒的新工具,HN爆了

👆 「关注」·「星标」,第一时间收到推送

发生了什么

凌晨刷HN,看到一条帖子直接炸了。

273个人在讨论一个叫Miasma的工具。标题很简单:“Trap AI web scrapers in an endless poison pit”——把AI爬虫困在无尽的毒坑里。

说实话,我看完标题就点进去了。

GitHub地址贴出来,两天时间,418个star。对于一个工具类项目来说,这个传播速度不太正常。

然后我去翻了Firecrawl的评论区——那是一个专门做AI网页抓取的服务。有人在下面问:“你们知道Miasma吗?”

官方回复了一个表情包:🔥

不是”我们不在乎”,是”我们看到了,有意思”。

这个反应让我意识到,Miasma不是一个普通的开源小工具。

Miasma是什么

一句话:一个专门用来毒化AI爬虫的工具

它是一个Rust写的小服务器。你把它部署在自己的网站上,当检测到恶意爬虫访问时——不是拒绝访问,而是往它们嘴里灌垃圾数据。

灌什么?

从”poison fountain”(毒泉)里取来的污染数据。地址是 rnsaffn.com/poison2/,据说是专门生成”让AI模型越学越蠢”的数据的服务。

最绝的是,它还会返回一堆自引用链接。爬虫抓了这些链接,继续爬,爬回来又是毒数据。

一个死循环。

AI公司花着服务器费用,消耗着电力,抓到的全是垃圾。

GitHub上这个项目是用Rust写的。Rust的好处在这里体现得很明显——内存安全,性能高,不需要GC停顿。50个并发连接时,内存占用控制在50-60MB。这个数字对于一个反爬虫工具来说,非常克制。

官方推荐的部署方式是通过cargo安装:

cargo install miasma

二进制文件也可以直接下载,不用自己编译。

它和Firecrawl有什么区别

说到AI爬虫,必须提Firecrawl。

Firecrawl是干什么的?帮AI公司抓网页的

它能把任意网站转化成”LLM-ready”的格式——Markdown、JSON、结构化数据。96%的网页覆盖率,包括那些JS重度渲染的页面。P95延迟3.4秒,处理速度非常快。

Mendable AI这家公司做的,背后有正经融资,商业模式清晰。

他们还做了很多周边能力:搜索API、批量抓取、Crawl功能、Map功能(快速发现网站所有URL)、Agent模式(描述需求自动采集)。一句话,能封装的都封装了,开箱即用。

所以你发现了吗?

Firecrawl是进攻方,Miasma是防守方。

它们在同一个链条上,但站在完全对立的两端。

Firecrawl想的是:怎么让AI更好地吞噬互联网的内容。

Miasma想的是:互联网的内容怎么反过来把AI搞残。

这两个赛道,现在同时存在,同时在跑。

有意思的是,这两个工具的作者——Mendable AI和austin-weeks——可能从来没有直接对话过。但他们在做完全不同甚至对立的事情。

HN上有个评论说:“这就像是一场军备竞赛,只不过战场在数据层。”

我觉得这个比喻挺准确的。

技术原理(怎么做到的)

我大概看了一下它的实现,核心思路很巧妙。

第一步:在网页里藏隐藏链接

<a href="/bots" style="display: none;" aria-hidden="true" tabindex="1">
  Amazing high quality data here!
</a>

人看不到,搜索引擎不抓,但爬虫能看到。

这三个属性叠在一起很关键:display:none让人眼看不见,aria-hidden=”true”让屏幕阅读器忽略,tabindex=”1″确保这链接不会被人用键盘导航触达。

但爬虫的HTML解析器不一样,它会照抓不误。

第二步:把爬虫引到Miasma服务器

Nginx配一个反向代理,把所有访问/bots路径的请求转发给Miasma。

location ~ ^/bots($|/.*)$ {
  proxy_pass http://localhost:9855;
}

正则匹配,/bots、/bots/、/bots/12345都能匹配上。Nginx的配置很成熟,这个方案稳定。

第三步:Miasma返回毒数据

miasma --link-prefix '/bots' -p 9855 -c 50

50个并发连接时,内存占用50-60MB。很轻。

关键参数是link-prefix,它告诉Miasma在返回的毒数据里,链接要前缀成/bots/。这样爬虫下一次抓取,又会被Nginx转回Miasma。

抓了一次,发现有链接,继续抓;抓回来一看,又有链接,继续抓——

然后就陷入了文章开头说的那个死循环。

Miasma还提供了一个配置项叫poison-source,默认指向rnsaffn.com/poison2/。这个地址提供毒化数据的源头。你也可以自己架设毒泉,但目前官方推荐用这个公共服务。

争议:这个工具合理吗?

这个话题在HN上吵得挺凶。

支持的人说:

AI公司未经授权抓取内容训练模型,本质上是偷窃。Miasma只是一个防御工具,就像网站加验证码防爬虫一样。

“如果你有公开网站,它们已经在偷你的东西了。”

这是Miasma README里写的一句话。情绪很强烈,但确实说到了一部分人的痛点。

网站内容是创作者的心血,AI公司没付钱就拿去训练,这事搁谁身上都不舒服。尤其是那些靠内容吃饭的媒体、作家、独立开发者。

反对的人说:

训练数据污染会破坏模型质量,而无辜的用户最终用的是被污染的模型。

换句话说,你毒化的不是AI公司,是那些用模型的普通人。

这个逻辑我暂时没想到怎么反驳。

你想,OpenAI训练GPT,用了海量网页数据。中间有被Miasma污染的吗?可能有。那最后用ChatGPT的人,得到的是一个被污染过的模型。

这听起来不太对。

还有人说:

这本质上是一种数据投毒攻击(data poisoning),法律上灰色地带。

AI抓取网站内容的边界到底在哪?robots.txt的效力有多强?这些问题目前都没有清晰答案。

现有的法律框架——版权法、信息网络传播权——都是在AI出现之前制定的。能不能直接套用,没人说得清。

普通人能用吗?

能。门槛很低。

cargo install miasma
miasma --link-prefix '/bots' -p 9855 -c 50

两行命令,部署完成。Rust写的,内存占用极低,跑在树莓派上都绑绑够。

但有几个问题你需要知道:

第一,你需要修改自己网站的HTML,嵌入隐藏链接。这对技术人来说不难,但对纯小白来说有点门槛。如果你的网站是WordPress装的,可能需要改主题文件。

第二,你需要配置Nginx或类似的反向代理。这个也有点门槛。好消息是Miasma官方文档里有详细的Nginx配置示例,对着抄就行。

第三,对大公司爬虫可能无效。大厂有IP封禁、请求验证、浏览器指纹等手段,Miasma主要对付的是中小规模的爬虫。OpenAI、Google这种级别的玩家,人家有专门的爬虫工程团队,不会轻易中招。

第四,robots.txt还是要写的。Googlebot、Bingbot、百度搜索这些正规搜索引擎要放行,只对AI爬虫生效。你可以在robots.txt里加一行:

User-agent: GPTBot
Disallow: /bots

OpenAI有公开的GPTBot的User-Agent,专门屏蔽它就行。

我的判断

我不会告诉你”这玩意牛X必须用”,也不会说”这违反道德不能用”。

我只说我的观察:

AI抓取互联网内容这件事,正在引发越来越大的反弹。

Miasma不是第一个,也不是唯一一个。Gptme、nightmare.ai、蟑螂算法……这些工具和思路在同步出现。它们代表的是一种声音:互联网内容不是免费的午餐。

而Firecrawl这样的工具代表的则是另一种声音:AI需要数据,数据应该自由流动。

这两条路线的对立,会是接下来几年里很有意思的博弈。

谁会赢?我不知道。

但有一点我比较确定:数据层的战争,才刚开始。

至于你要不要部署Miasma——

取决于你怎么看AI公司和内容创作者之间的关系。

我没有标准答案。

说实话。

相关文章:

  • Firecrawl官网
  • Miasma GitHub
如果觉得有用,点个在看吧 👍关注公众号「AI留明」,持续输出有价值的 AI 内容