使用开源的 Anubis 应对 Llm 及互联网爬虫

自从用上了 Anubis,网站访问数据再也没上升过了。这对自信是一个巨大的挑战。

自从 ChatGPT 以及各种 Llm 的工具的兴起,各种各样的网站都不断地被爬虫读取数据:更多更好的数据(大体上)意味着更大更好的模型。但网站不断地被爬虫爬取数据意味着真人想要访问网站就会受到影响,人用浏览器是不可能比不断发起请求的爬虫更快访问网站的。

我喜爱的开源路由器系统 OpenWrt 的网站也受到巨大影响,所有的 Llm 几乎都想要爬遍 OpenWrt 的每一条帖文,导致大量的 Wiki 和下载页面不可用。今年 4 月份,我在 OpenWrt 论坛建议要不要上 Anubis 来阻止爬虫;当时管理员觉得还用不上,现在你登录 https://openwrt.org 已经能见到 Anubis 的小豺狼了(不是狐狸,Anubis 作者 Xe 确认是 Jackal 豺狼)。

Anubis 的原理是让有风险的访问流量强制执行 JavaScript 代码并进行本地运算,运算失败的流量就会被禁止访问网站内容(作者用 “度量每次连接的灵魂重量” 幽默地解释其设计)。考虑到大部分的爬虫不能运行 JavaScript 代码,也不会分配那么多的计算资源,这个聪明的设计足以挡住大部份不合法流量。

虽然也有人指出华为的爬虫已经可以进行 JavaScript 验证,可以预计未来随着算力的增加,爬虫分配的计算资源也会越来越多;但所谓道高一尺魔高一丈,可以预期未来 Anubis 也会进一步进行升级,有心的朋友可以前往 GitHub,付费支持 Xe 的开发

基本的配置看其文档就可以搞定,我选择的是本地安装,对我来说会比 Docker 安装更为顺手;我另外想要分享一下监听 unix 而不是 127.0.0.1 可能遇到的一些问题。

unix 监听会比 localhost 监听减少一些 TCP 连接的开销。虽然实际开销(本地连接几乎无延迟、带宽问题)相比起名义开销(最高可能有 50%)其实可以忽略不计,但因为想要省钱,便宜的服务器的资源当然是能省就省。

首先,TARGET 的写法在教程中说是 unix:///path/to/socket.sock,但其实不用那么多斜杠,unix:/path/to/socket.sock就可以。

其次,默认的 Anubis Systemd 服务文件会把 unix 监听文件的权限写成 anubis:anubis,如果你的 Nginx 的用户是 www-data,那么你是无法读取 unix 文件而导致访问 502 问题。考虑到 Anubis 的升级,直接更改 systemd 文件不可取,但是可以通过systemctl edit anubis@修改所有实例的启动文件:

### Anything between here and the comment below will become the new contents of the file

[Service]
DynamicUser=no
User=www-data
Group=www-data

### Lines below this comment will be discarded

这样,当你systemctl enable --now anubis@your.service创建新的实例的时候,unix 文件就会创建所有权为www-data:www-data,www-data 用户的 Nginx 就可以正常访问。

ChatGPT 只会让工作更多更累更繁重

马克思和马斯克都预言人类未来不用再工作,但我觉得应该不会早于耶稣第二次来地球。

自从开始用大语言模型(Llm)的工具,我的工作效率的确有很大提升。

我是做海外业务的,以前我还会把文档用 OmegaT 这样的翻译工具配合微软或者谷歌的翻译 API,一行一行手动修正翻译成中文或者是英文以提供给公司内部或者客户查看或使用;现在,短小的 docx 文档能用 Word 的功能直接翻译,PDF 或者其他类型的文档,我会丢给类似 oTranslator 这样的大语言模型代理工具,配合上一点提示词,选用合适的模型就能搞定,无非就是付一点不多的成本。以往看到就知道要花上好几天,心里产生抵触情绪以至厌烦的翻译工作,现在点击几下,喝杯咖啡,转头就能获得不错的结果,用于不那么严肃的技术、商务沟通场合,同事、客户都反响不错。

甚至从去年以来,我和讲西班牙语的客户的邮件往来基本都由大语言模型代劳:客户的邮件使用便宜、快速的模型翻译以理解客户意图,再用英文写回复,配合相对高级的思考型模型配合我定义的语言风格翻译成西班牙语。虽然以前通过谷歌翻译就能实现,但机器翻译的流畅程度还是远差于大语言模型。

再来就是客户开发与冷电话(Cold Call)沟通。最早 GPT-4 不具备联网搜索功能的时候,我尝试部署 Open-WebUI 这样的工具配合谷歌搜索 API 进行结合 RAG 功能筛选,效果非常差——单次搜索价格时间成本很高,精度又不理想。调用 API 的成本很快就会随着使用的增加变成不愿承担的负担。尝试过 ChatGPT、Copilot 这样的工具,搜索结果又不十分理想,只能又回到手动搜寻,反而效率更高。直至前段时间,参与 PayPal 的活动免费拿了一年 Perplexity 的使用权,配合我定义的提示词,一天之内我能定位 3-5 家目标公司联系人,并拟定下接触计划,配合自己部署的客户管理系统 Twenty,按计划进行接触和记录就可以,以往需要一两周才能定下的工作,效率的确有了极大的提升,我明年付费使用 Perplexity 也是一定了的。

是的,大语言模型工具已经完全改变了我的工作模式和方法,效率提升极大,使我用更短的时间完成了更多的工作,似乎马斯克声称的只需要少数人工作的未来似乎并不遥远。

但马斯克终究是亿万富翁,没打过工也没缺过钱,站在亿万富翁的角度为大众思考为什么还需要工作的论述,就像晋惠帝司马衷思考为什么民众不喝肉汤一样匪夷所思。同样匪夷所思的还有马斯克的拥趸——大抵是只有没真正打过工的人才会相信效率的提升会造福普通人。

以我对商业粗浅的理解,职场工作效率提升之后更有可能发生这样的事情——

  • 投资者发现单位员工产出上升,快速将工具部署到每个员工;
  • 员工效率提升,推动公司业绩上扬;
  • 人力资源成本核算发现,效率提升可以用更少的人做同样多的事情,或者同样多的人增加更多的事情;
  • 管理人员轻松做出决策,通过裁员降低成本并维持同样业绩收入,提升利润率,或者要求所有员工提高效率以提高收入,并裁掉不能应用新工具的低效率员工;
  • 作为结果,投资人获得了更多的回报,而员工得到的是同样的收入和更多的工作,并面临更激烈竞争的情况甚至导致收入更低。

的确有人不用再工作了——高效率的员工会帮助已经很有钱的投资人更加有钱,并推动部分高收入人群也加入这个不用工作的群体。如果你也在那部分人群里,那么想象一个没有人需要工作的世界也不是那么的难,只不过这个世界是基于剥削另一个世界的员工创造的。

我们正在这条路上越走越远。亚马逊最近的 14,000 个岗位的裁撤(作为 30,000 个岗位裁撤的一部分)无疑是最新的一例证据。随着巨富变得更富,我们可以预期有庞大声势和资源的那些人的道德和趣味会进一步脱离大众,并因媒体资源传播导致被剥削群体莫名其妙地拥护他们,形成低收入群体维护巨富群体的奇怪场面,仿佛回到了封建时代农奴对领主感恩戴德的道德观。

作为普通业务员,在预期可见的未来,我会继续使用提高效率的工具——毕竟的确让我在工作上更游刃有余。就像学会了开车,没有必要骑自行车周游世界,有更趁手的工具在手,非要扔掉好用是在是不符合逻辑;但如果因此非要嘲笑没有工具效率低的人跟不上时代,而没有认清自己也迟早是会被淘汰的,那么我们只不过是被困在在弱肉强食的世界里为资本创造价值。

ChatGPT 让我们的工作更多、更累、更繁重的情况已经开始蔓延。马斯克预言所有人会因 AI 享有同等高收入的未来让人遐想,但恐怕和马克思的理论一样难以实现。作为普通人,还不如期待一下有生之年看到耶稣再到地球。