Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

我在空闲时间与机器人战斗

Posted on 2025-06-16

这是我在BSDCan做的一次闪电演讲。那次会议太棒了,明年我一定会参加!

想用你选择的视频播放器观看吗?那就看这个吧:
https://files.xeiaso.net/talks/2025/bsdcan-anubis/index.m3u8
标题幻灯片包含演讲内容和演讲者姓名。

大家好,我是 Xe,空闲时间我会和机器人对抗。我很想全职做这件事,但目前经济条件不允许。我开发了 Anubis。Anubis 是一款网络人工智能防火墙工具,可以阻止机器人攻击你的网站。它本质上就是 Cloudflare 的“你是机器人吗?”页面,但可以自行托管。

验证码组件。

如果没有这个,爬虫程序就会内置验证码解析器。这些验证码解析器实际上就是一些 API,只不过是让那些拿着低薪的第三世界人类参与其中而已,这真是糟糕透顶,令人作呕。

验证码组件。

所以 Anubis 就是一种 uncaptcha 验证码。它利用浏览器的功能自动完成 CAPTCHA 的很多工作,目前主要的实现方式是使用 JavaScript 运行一系列加密数学运算,以证明你可以以服务器端可验证的方式运行 JavaScript。我正在努力避免这种情况,因为令人惊讶的是,很多人对必须运行 JavaScript 感到非常恼火,但这并非不可能。

验证码组件。

Anubis 是一款用 Go 编写的开源软件。它在 GitHub 上。它获得了大约 8 颗星。它适用于任何允许运行多个程序的堆栈。我们有 Nginx、Caddy、Apache 和 Kubernetes 的示例。

幻灯片展示了 Anubis 的 Repology 版本历史图。

它在你的软件包仓库里。如果你为 FreeBSD 做了移植,或者为 NetBSD 做了 pkgsrc 的移植,请升级版本。我即将发布一个新版本,但请升级当前版本。

阿努比斯为何存在?

那么你可能会好奇,这个故事讲的是什么?阿努比斯为什么存在?

亚马逊标志使用火焰喷射器烧毁了我的 Gitea 服务器。

好吧,事情发生了。我有一个 Git 服务器,用于我自己的邪恶计划,亚马逊的爬虫通过 TLS 证书透明日志发现了它,并决定释放上帝之锤。事情就是这样。他们用大量的请求把我可怜的服务器烧毁了,这真的很烦人,因为我试图做点什么,但就是不行。如果你没有把存储安排在旋转硬盘上,这也会有帮助。

幻灯片中展示了大量部署阿努比斯的组织的标志。

但我把它发布在了 GitHub 上,大约四个月后,看看这些 logo。还有一些 logo 我忘了放在这里,以后会放在我网站上的版本里。不过,没错,FreeBSD、NetBSD、Haiku、GNOME、FFmpeg 和联合国教科文组织都在使用它。说实话,在 DuckDuckGo 上随便搜索一下就看到联合国教科文组织,这让我觉得,嗯,这或许真的是一个问题。而且就像任何好问题一样,它也是一个难题。

Pale Moon 通过机器人检测检查的屏幕截图。

如何判断任何请求是否来自浏览器?

这张截图使用的是 Pale Moon,它是机器人检测服务方面一个众所周知的问题,我经常对其进行测试以确保它有效。但是,如何知道任何给定的请求是否来自浏览器呢?

这非常困难,我一直在努力寻找更好的方法。问题是,为了知道好的浏览器是什么样子,你必须知道坏的爬虫是什么样子。好消息是,爬虫看起来就像浏览器一样,Aterisk。所以你必须找到其他方法,比如行为、第三方或类似三阶副作用的方法。这非常痛苦。

我一直在尝试的指纹识别方法列表,包括 JA4、JA3N、JA4H、HTTP/2 指纹识别、THR1 以及客户端是否执行 JS。

因此,我尝试了各种指纹识别方法。我这里列出的很多指纹,比如 JA4、JA3N,都是基于你发送给每个网站的 TLS 信息,无论你是否愿意,因为这就是安全机制的运作方式。我尝试根据 HTTP 请求或你发送给服务器的 HTTP2 数据包来执行操作,你必须这样做才能正常工作。我又回到了“你能运行 JavaScript 吗?”这个问题,哈哈。

我未来想要尝试的事情的清单。

所以就我接下来想做的事情而言,显然我想在 BSD 上做更好的测试。目前我的测试是:它能编译通过吗?因为我是用 Go 写的,没有用 Cgo,所以答案是肯定的。我想为 BSD 构建二进制包,因为即使我认为 BSD 更适合下游移植之类的工作,我仍然希望将这些包作为一个选项。

我想做一个像 Cloudflare 那样的托管方案,因为有些人就是不想运行 Anubis,但又想自己运行。我想设置基于系统负载的阈值,这样它只有在系统处于活跃状态时才会启动,因为它非常激进。我想有更好的 NoJS 支持,这将包括所有无需 JavaScript 就能像浏览器一样显示信息的方式,让你不得不阅读所有规范,然后开始崩溃。我想在服务器上使用 WebAssembly 做一些事情,因为我一直想看看它在生产环境中会如何发展。我想做一个 IP 信誉数据库,Kubernetes 相关的,端到端测试应该不错。

最后,我真的很想雇用一位贡献者,但我现在还负担不起,所以当我有能力的时候我很乐意雇用他。

如果你想破坏阿努比斯,请确保《最终幻想 14》能够正常运行。

另外,如果你在一家人工智能公司工作,我知道人工智能公司会关注我。如果你在一家人工智能公司工作,以下是一些可以尽可能轻松快速地破坏Anubis开发的方法。第一,辞掉你的工作;第二,去Square Enix工作;第三,为《最终幻想14》制作绝对精彩的内容。这才是你破坏它的最佳方法。

Xe 的社交媒体联系信息。

不管怎样,我是Xe,我有贴纸,我会在后面,感谢你们邀请我来这里。如果你们有任何问题,请随时提问。

问答

好吧,作为会议主席,我考虑的是大家发表评论而不是提问。我要滥用职权,发表一下评论。你救了我一命,谢谢你。

不客气。我很高兴事情成功了。这真是莫大的荣幸——让我回到徽标幻灯片上,因为这太疯狂了。

幻灯片中展示了大量部署阿努比斯的组织的标志。

我们来看看这个。这是 gnome,这是 wine,这是 dolphin,这是 Linux 内核,这是 ScummVM,这是 FreeCAD,还有联合国教科文组织 (UNESCO) 都在同一张幻灯片上。我们还能有其他什么时间线呢?

2025 年真是疯狂。

那么你感觉如何?因为你本质上想解决的不是技术问题,而是一个社会问题。你认为这样能赢吗?还是我们必须用另一种方式来解决这个问题,让人们变得更聪明,或许用更聪明这个词不太恰当。

我不确定这最终会是什么结果。我最初开发它的目的是为了让我的 Git 服务器保持正常运行。后来,Gnome 开始使用它。然后它就成了热门话题。我把它放在了一个讽刺科技行业的初创公司的 GitHub org 下。现在,这个公司在教育领域有了市场。

我想把它打造成一个 Web 应用防火墙,让它有可能在人工智能泡沫破灭后屹立不倒。因为目前,人工智能泡沫破灭可以说是对企业最大的威胁。所以,很多工作都在思考如何转型并做到这一点。我还开发了一个名为 Yeet 的构建工具,它使用 JavaScript 来构建 RPM 包。是的,在某个领域,这确实有意义。这里面有很多复杂的问题,也有很多社会问题。

但如果你在写爬虫,就别这么做了。说真的,爬虫流量已经够多了。用 Common Crawl 吧。它的存在是有原因的。

原文: https://xeiaso.net/talks/2025/bsdcan-anubis/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Li Haoyi
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mind Matters
  • Mostly metrics
  • Naval Ravikant
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme