运维日志您现在的位置是:首页 > 博客日志 > 运维日志

如何阻止 AI 爬虫

<a href='mailto:'>微wx笑</a>的头像微wx笑 2025-07-06运维日志11 0 0关键字:   

AI 大模型公司,正在疯狂收集训练数据。它们派出无数爬虫,在互联网上无节制地抓取数据。爬虫数量之多、频率之高,堪比 DDoS 攻击。上周,代码托管网站 SourceHut 的站长,公开发表文

无知人生,ivu4e.com,ivu4e.cn


Re9无知

AI 大模型公司,正在疯狂收集训练数据。Re9无知


Re9无知

它们派出无数爬虫,在互联网上无节制地抓取数据。爬虫数量之多、频率之高,堪比 DDoS 攻击。Re9无知


Re9无知


Re9无知


Re9无知

上周,代码托管网站 SourceHut 的站长,公开发表文章(下图),痛斥 AI 爬虫太过份,服务器无法承受访问压力,中断服务。Re9无知


Re9无知


Re9无知


Re9无知

他非常生气,这些爬虫根本不遵守 robots.txt 文件,Git 仓库的每个页面、每个链接、每个提交都要爬取。Re9无知


Re9无知

它们来自全球数万个 IP 地址,用户代理(user-agent 字段)也是随机的,伪装得像真实用户,难以有效拦截。Re9无知


Re9无知

最可气的是,它们今天爬完了,过了六小时,又来爬同样的内容!Re9无知


Re9无知

每一周,他要用20%~100%的工作时间,处理这些爬虫造成的服务器压力。SourceHut 已经中断服务好几次,对于一个 SaaS 工具,这是致命的。Re9无知


Re9无知

最后,他说不只他遇到这种事,整个行业都深受其害。Re9无知


Re9无知

"我的系统管理员朋友,都在处理同样的问题。每次我坐下来和他们喝啤酒或吃晚餐时,我们很快就会抱怨机器人。这些对话中的绝望是显而易见的。"Re9无知


Re9无知

那么,有什么办法,可以对付这些 AI 爬虫?Re9无知


Re9无知

最简单的方法,就是使用 Cloudflare 公司的免费防护,它的 CDN 可以帮你挡掉 AI 爬虫。Re9无知


Re9无知

但是,有些企业级服务不适合使用 Cloudflare,这时你就必须自己来挡爬虫。Re9无知


Re9无知

今天,向大家介绍一个专门对付爬虫的工具 Anubis。Re9无知


Re9无知


Re9无知


Re9无知

它是一个采用工作量证明的反向代理。所谓反向代理,就是目标网站的所有访问请求,都会重定向给它。Re9无知


Re9无知

你首先要架设一个它的实例,然后把这个实例放在目标网站之前,当作反向代理(比如像下面设置)。Re9无知


Re9无知

reverse_proxy http://localhost:3000Re9无知


Re9无知

于是,用户访问网站时,首先看到不是目标网站,而是 Anubis 的页面(下图)。Re9无知


Re9无知


Re9无知


Re9无知

这个页面会在用户的浏览器上,执行一段 JS 程序,进行大量的数学计算。直到计算答案正确,才可以访问目标网站。Re9无知


Re9无知

这个过程有时很耗时,可能需要1~2分钟。Re9无知


Re9无知


Re9无知


Re9无知

(图片说明:上图的手机浏览器用了1分53秒,才计算完毕。)Re9无知


Re9无知

对于爬虫来说,如果每个请求都要耗费大量计算,才能拿到数据,这会极大地消耗它的服务器资源,从而达到阻止爬虫访问的目的。Re9无知


Re9无知

当然,真实的访问者也必须完成这样一个计算,这非常影响使用体验。但是,总比听任爬虫造成访问中断要好。Re9无知


Re9无知

那么,Anubis 到底让爬虫计算什么?Re9无知


Re9无知

具体来说,就是下面这行代码,计算一个哈希值。Re9无知


Re9无知

const hash = await sha256(`${challenge}${nonce}`);Re9无知


Re9无知

可以看到,它就是用 SHA256 算法,计算一个字符串的哈希值。Re9无知


Re9无知

这个字符串由两部分组成,第一部分challenge,由用户的一些公开信息连接而成,包括用户的 IP 地址、浏览器 user-agent 字段、当前日期、Anubis 的公钥等。Re9无知


Re9无知

第二部分nonce,表示迭代次数,第一次计算就是1,第二次计算就是2,以此类推。Re9无知


Re9无知

Anubis 的默认设定是,计算出来的哈希值的前五位必须都为0,否则 nonce 自动加1,再次进行计算,直到满足要求为止。Re9无知


Re9无知

有时,可能需要计算几百万次,才能得到合格的哈希值。熟悉比特币的同学,应该一眼看出来了,这就是比特币的算法。比特币是非常耗费算力的,所以 Anubis 也能很有效地消耗爬虫的 CPU。Re9无知


Re9无知

当客户端终于算出满足要求的哈希值时(前五位为0),就会把这时的 nonce 值传给 Anubis 实例服务器,让后者验证哈希值是否正确。没问题的话,Anubis 就会将客户端重定向到目标网站,并在客户端写入一个 Cookie,以免后续请求再触发工作量验证。Re9无知


Re9无知

这就是阻止爬虫的整个过程,不知道说清楚了没有,原理很简单,实施也不难。Re9无知


Re9无知

事实证明,它很有效。一个站长说,两个半小时内,他的网站总共收到了81000个请求,其中只有3%通过了 Anubis 的工作量证明,这意味着97%的流量可能都是机器人!Re9无知


Re9无知

这太疯狂了,可见现在的 AI 爬虫有多猖獗。如果你的网站也遇到了同样问题,又没法使用 Cloudflare,那可以试试 Anubis 的工作量证明。Re9无知


Re9无知

无知人生,ivu4e.com,ivu4e.cn

信息来源:科技爱好者周刊
本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! (0) 有话说 (0)

相关文章

文章评论