科技爱好者周刊#343:如何阻止 AI 爬虫

360影视 日韩动漫 2025-03-28 08:31 3

摘要:本杂志开源[1],欢迎投稿[2]。另有《谁在招人》[3]服务,发布程序员招聘信息。合作请邮件联系[4](yifeng.ruan@gmail.com[5])。

这里记录每周值得分享的科技内容,周五发布。([通知] 下周清明假期,周刊休息。

本杂志开源[1],欢迎投稿[2]。另有《谁在招人》[3]服务,发布程序员招聘信息。合作请邮件联系[4](yifeng.ruan@gmail.com[5])。

杭州临平的“天空草莓”农场,草莓种在悬空的钢架上,可以按需升降。(via[6])

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

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

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

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

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

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

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

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

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

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

最简单的方法,就是使用 Cloudflare 公司的免费防护[8],它的 cdn 可以帮你挡掉 AI 爬虫。

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

今天,向大家介绍一个专门对付爬虫的工具 Anubis[9]。

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

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

reverse_proxy http://localhost:3000

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

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

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

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

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

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

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

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

const hash = await SHA256(`${challenge}${nonce}`);

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

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

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

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

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

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

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

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

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

科技动态

1、中国矿业大学研发了一款太空挖矿机器人[10]。

它共有6足,其中3个是前进的轮子,3个是挖矿的爪子。

2、英国民众本周纷纷报告,夜空中发现螺旋状的云[11]。

英国气象局调查后宣布,那是猎鹰9号火箭发射时,快速旋转的箭体喷出的尾气。

尾气在太空中瞬间冻结,经过太阳光反射,看上去像云一样。

3、科学家提出,生命起源地[12]可能不是大海,而是封闭的大型碳酸钠湖泊。

因为生命起源的化学反应,需要很高的磷浓度,但是自然界(包括大海)的磷含量很低,只有富含磷的碳酸钠湖泊符合条件。

4、盈通公司推出一款有香味的 GPU[13]。

这款 GPU 内置了香味剂。运行时,它的散热风扇就会将香味吹出去。

5、其他

(1)根据 Cloudflare 统计,41%的互联网登录[14]使用泄漏的密码,原因是大部分用户习惯复用同样的密码。

(2)中国睡眠研究会统计,2025年中国人夜间平均睡眠[15]6.85个小时,比去年增加6分钟。入睡时间平均为0点18分,比去年晚了17分钟。

(3)一项研究[16]提出,每天的进食时间限制在8小时之内,其他16小时不进食,有利于肥胖者减肥,改善健康。

文章

1、Gemini 2.5 Pro 模型

本周,谷歌发布它的最强模型 Gemini 2.5 Pro[17],迅速登顶。

著名程序员 Simon Willison 对其进行测评[18],评价很高。

另有一个程序员[19]让其执行一个非常复杂的任务,它想了半天后说,这个任务太复杂,不可能在一个步骤中完成,只能做出一个简化版。

这让人非常震惊,因为以前的 AI 遇到做不了的事情,只会给出错误的答案,而现在竟然会在分析后,承认超出了自己能力。

2、谷歌将不开放安卓的开发[20](英文)

这篇报道称,谷歌将完全私有化安卓的开发,不再接受外部的代码提交,以避免安卓开源版 AOSP 与内部版本之间合并分支的麻烦。

以后,谷歌会把安卓新版本先提供给 OEM 厂商,然后再发一个不接受外部提交的开源 AOSP 版。

3、Next.js 的中间件漏洞[21](英文)

本周,Next.js 爆出一个高危漏洞。如果登录步骤是在中间件里面完成,那么可以绕过这个步骤,直接进入登录状态。本文简要介绍什么代码导致了这个漏洞。

4、TypeScript 如何写函数类型[22](英文)

本文是一篇初级教程,介绍函数的类型在 TypeScript 的三种写法。

5、我对 MCP 的批评[23](英文)

MCP 是 Anthropic 公司提出的一个 AI 应用的接口协议,作者认为它并不好用,给出了自己的理由。

6、只使用 ESM 模块[24](英文)

本文提出,现在可以放弃 JS 语言的 CommonJS 模块了,只使用 ESM 模块,一个原因是require命令已经支持加载 ESM 模块了。

工具

1、CSS FlexCode[25]

开源的 VS Code插件,通过图标生成 flex、grid 布局的 CSS 代码。(@xutao-o[26] 投稿)

2、StreamCap[27]

一个桌面应用(支持 Windows 和 Mac),基于 FFmpeg 进行直播录制,覆盖40+国内外主流直播平台。(@ihmily[28] 投稿)

3、Bilibili History Analyzer[29]

B 站历史观看记录管理工具,可以保存观看记录,支持视频下载、数据分析、AI 摘要等功能,采用 Python + SQLite 开发,分为前端和后端。(@2977094657[30] 投稿)

4、GoRead[31]

一个用 Go 语言编写的终端里面的 EPUB 阅读器。(@Ray-D-Song[32] 投稿)

5、GateShift[33]

一个 Go 语言写的命令行工具,用于一行命令切换网关,适合同时有 OpenWrt路由和默认路由的环境。(@ourines[34] 投稿)

6、Drawnix[35]

开源的在线白板工具,集成了思维导图、流程图、画笔。(@pubuzhixing8[36] 投稿)

7、小米笔记的 Obsidian 插件[37]

它将小米云服务里面的小米笔记,转换为 Markdown 格式保存到 Obsidian 文件夹。(@emac[38] 投稿)

8、wxlogin[39]

一个基于 Next.js 的开源应用,基于微信公众号的网站登录,用户通过公众号获取验证码,从而在网页端登录。(@liyaodev[40] 投稿)

9、Docxy[41]

开源的 Docker Hub 镜像代理服务,可以通过它拉取容器镜像。(@harrisonwang[42] 投稿)

10、Bondma[43]

一个开源的多语言翻译管理平台,提供直观的 Web 界面。(@HeroIsUseless[44] 投稿)

11、DeepPDF[45]

免费的 PDF 文件翻译网站,比如英文 PDF 翻译成中文,保留排版不变。(@icaohongyuan[46] 投稿)

12、RSSPod[47]

收听、订阅播客的网站。(@Jaksay[48] 投稿)

13、Supa Simple Socket[49]

网友投稿的 WebSocket 的 JS 客户端库,支持心跳机制、断点重连、事件订阅和文件传输。(@JustinGastby[50] 投稿)

14、Inscribed.app[51]

一款在线工具,基于幻灯片制作创意草图和动画。 (@chunrapeepat[52] 投稿)

15、LinkAndroid[53]

开源的手机连接助手,方便连接 Android 和电脑。(@modstart[54] 投稿)

16、Teleprompter.today[55]

一个在线的提词器,为演讲者、视频创作者和直播主播提供文本提示,可以定制各种属性。(@s87343472[56] 投稿)

AI 相关

1、Web Design AI Agent[57]

开源的 AI 应用,根据文字描述和图片生成网页,使用 Claude AI 模型,部署在 Cloudflare worker。(@mggger[58] 投稿)

2、AigcPanel[59]

开源的 AI 数字人生成工具。(@modstart[60] 投稿)

3、EmojiMyFace[61]

免费的 AI 挡脸工具,将脸部替换成 Emoji 符号。(@Takea-nap[62] 投稿)

4、aisubtranslate.Top[63]

AI 模型翻译字幕文件的免费网站。(@LetheTK[64] 投稿)

资源

1、DNS 速度测试[65]

这个网站测试从你的计算机到世界主要公共 DNS 服务器的速度。

另有一个类似的命令行工具 dnspy[66]。(@xxnuo[67] 投稿)

2、Orbit[68]

该网站提供一种可视化的方式,发现你喜欢的新音乐。

3、Top Hacker News[69]

该网站展示“黑客新闻”实时的热门文章,有插图和内容总结。(@heyppen[70] 投稿)

4、MusicMint[71]

一个 AI 音乐网站。(@250465043[72] 投稿)

5、旅行插头顾问[73](Travel Plug Advisor)

该网站查询世界各地的插头类型和电压。(@imowen[74] 投稿)

1、地球和太阳的大小[75]

太阳的大小远超地球,直径是地球是109倍,体积是130万倍。

上图中,左下角的蓝点就是地球。

所以,一丁点的太阳能,就足够地球使用。

2、AI 生成表情包[76]

上周,OpenAI 开放了 GPT-4o 的图片生成功能[77]。网友发现,只要上传一张图片,就可以用它生成表情包,效果极佳。

提示词[78]是:“请把照片里面的角色画成 Q 版,并用12个动作和文字做成表情包。”

文摘

1、为什么重新发明轮子[79]

我喜欢从头开始写东西,经常有人说,我在重新发明轮子。

我这样做有好几个理由。

(1)学习。通过重新发明轮子,我学到了很多东西,知道了工作原理,以及怎么动手做。

(2)定制。没有一种轮子适合所有情况。通过创建自己的轮子,我可以根据具体情况定制,让它更适合我。

(3)创新。现有的一些轮子很糟糕,重新发明轮子时,就有机会探索新的可能性。

(4)享受。事实上,前面三条理由可以不存在,重新发明轮子只是因为我喜欢动手,出色完成工作时,我会有一种满足感。

但是,我不推荐你也这样做。重新发明轮子并不都那么美好,有一些不可忽视的缺点。

(5)重新发明轮子可能很耗时,需要投入大量时间。

(6)最终产品可能不如现有解决方案。

(7)容易陷入无限递推的困境。为了制造轮子,我还必须重新发明锤子吗?

所以,如果你想重新发明轮子,一定要想清楚两点。第一,你有足够时间吗,尤其是涉及其他人的情况下。第二,重新发明的范围(或者说,你不打算重新发明什么),以免不必要地偏离主题。

言论

1、

一个优秀程序员,最开始是实施者(implementer),然后进化到解决者(solver),最后变成发现者(finder)。

-- 《实施者、解决者和发现者》[80]

2、

如果你正在开发一款希望长久使用的产品,那么前端框架就是你最不需要做的技术决策。你争论哪一个框架好的时间,都是在浪费精力。

无论你选择什么框架,5年后都会过时,即使那时你选择的框架还存在,也会变得完全不同,这就是前端社区的运作方式。

-- 《前端跑步机》[81]

3、

在2025年开发 Web 应用,有点像组装宜家家具。你必须拼凑和配置许多单独的服务:前端、后端、cdn、https、数据库、身份验证、付款……

你的工作不是写代码,而是配置、管道、编排、工作流、最佳实践。

-- Andrej Karpath[82],著名 AI 科学家

4、

愤怒是一种具有破坏性的情绪,会让人产生报复的欲望,这不利于你的根本利益。更理性的方法是,不要先想到报复,而要想想你与对方有没有共同利益,寻求合作和谅解。

-- 《超越愤怒》[83]

5、

各种宗教都驱逐异教徒,不是因为他可能是错的,而是因为他可能是对的。

-- Edsger W. Dijkstra[84]

xz 后门的作者 Jia Tan 是谁?[85](#296)

永不丢失的网络身份[86](#246)

掌机的未来[87](#196)

网课应该怎么上?[88](#146)

[1] 开源:
[2] 投稿:
[3] 《谁在招人》:
[4] 邮件联系: mailto:yifeng.ruan@gmail.com
[5] yifeng.ruan@gmail.com:
[6] via:
[7] 文章:
[8] 免费防护:
[9] Anubis:
[10] 太空挖矿机器人:
[11] 螺旋状的云:
[12] 生命起源地:
[13] 有香味的 GPU:
[14] 41%的互联网登录:
[15] 中国人夜间平均睡眠:
[16] 一项研究:
[17] Gemini 2.5 Pro:
[18] 进行测评:
[19] 另有一个程序员:
[20] 谷歌将不开放安卓的开发:
[21] Next.js 的中间件漏洞:
[22] TypeScript 如何写函数类型:
[23] 我对 MCP 的批评:
[24] 只使用 ESM 模块:
[25] CSS FlexCode:
[26] @xutao-o:
[27] StreamCap:
[28] @ihmily:
[29] Bilibili History Analyzer:
[30] @2977094657:
[31] GoRead:
[32] @Ray-D-Song:
[33] GateShift:
[34] @ourines:
[35] Drawnix:
[36] @pubuzhixing8:
[37] 小米笔记的 Obsidian 插件:
[38] @emac:
[39] wxlogin:
[40] @liyaodev:
[41] Docxy:
[42] @harrisonwang:
[43] Bondma:
[44] @HeroIsUseless:
[45] DeepPDF:
[46] @icaohongyuan:
[47] RSSPod:
[48] @Jaksay:
[49] Supa Simple Socket:
[50] @JustinGastby:
[51] Inscribed.app:
[52] @chunrapeepat:
[53] LinkAndroid:
[54] @modstart:
[55] Teleprompter.today:
[56] @s87343472:
[57] Web Design AI Agent:
[58] @mggger:
[59] AigcPanel:
[60] @modstart:
[61] EmojiMyFace:
[62] @Takea-nap:
[63] aisubtranslate.top:
[64] @LetheTK:
[65] DNS 速度测试:
[66] dnspy:
[67] @xxnuo:
[68] Orbit:
[69] Top Hacker News:
[70] @heyppen:
[71] MusicMint:
[72] @250465043:
[73] 旅行插头顾问:
[74] @imowen:
[75] 地球和太阳的大小: https://www.facebook.com/permalink.php?story_fbid=pfbid0xD8yB6UiCKtNhvyfM6w8ARCRXzxukjMgfYcShuAcNAthBbBToy9j3LC3vDExaz1yl&id=100064747956101
[76] AI 生成表情包:
[77] 图片生成功能:
[78] 提示词:
[79] 为什么重新发明轮子:
[80] 《实施者、解决者和发现者》:
[81] 《前端跑步机》:
[82] Andrej Karpath:
[83] 《超越愤怒》:
[84] Edsger W. Dijkstra: https://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD831.html
[85] xz 后门的作者 Jia Tan 是谁?:
[86] 永不丢失的网络身份:
[87] 掌机的未来:
[88] 网课应该怎么上?:

来源:ruanyf

相关推荐