慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

阮一峰的网络日志

科技爱好者周刊(第 396 期):互联网通信的替代方案 科技爱好者周刊(第 396 期):互联网通信的替代方案 - 阮一峰的网络日志 科技爱好者周刊(第 395 期):软件开发的第三种方式 科技爱好者周刊(第 395 期):软件开发的第三种方式 - 阮一峰的网络日志 科技爱好者周刊(第 393 期):脑腐状态 科技爱好者周刊(第 392 期):axios 投毒与好莱坞式骗术 科技爱好者周刊(第 391 期):AI 的贫富分化 科技爱好者周刊(第 390 期):没有语料,大模型就是智障 套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的"套壳"疑云 科技爱好者周刊(第 389 期):未来如何招聘程序员 科技爱好者周刊(第 388 期):测试是新的护城河 零安装的"云养虾":ArkClaw 使用指南 科技爱好者周刊(第 387 期):你是领先的 科技爱好者周刊(第 386 期):当外卖员接入 AI 字节全家桶 Seed 2.0 + TRAE 玩转 Skill 科技爱好者周刊(第 385 期):马斯克害怕中国车企吗? 智谱旗舰 GLM-5 实测:对比 Opus 4.6 和 GPT-5.3-Codex 科技爱好者周刊(第 384 期):为什么软件股下跌 科技爱好者周刊(第 383 期):你是第几级 AI 编程 Kimi 的一体化,Manus 的分层 科技爱好者周刊(第 382 期):独立软件的黄昏 AI native Workspace 也许是智能体的下一阶段 科技爱好者周刊(第 381 期):中国 AI 大模型领导者在想什么 科技爱好者周刊(第 380 期):为什么人们拥抱"不对称收益" 科技爱好者周刊(第 379 期):《硅谷钢铁侠》摘录 我如何用 AI 处理历史遗留代码:MiniMax M2.1 升级体验 科技爱好者周刊(第 378 期):预测是新的互联网热点 科技爱好者周刊(第 377 期):14万美元的贫困线 科技爱好者周刊(第 376 期):太空数据中心的争议 科技爱好者周刊(第 375 期):一扇门的 Bug 终于有人做了 Subagent,TRAE 国内版 SOLO 模式来了 科技爱好者周刊(第 374 期):6GHz 的问题 VS Code 使用国产大模型 MiniMax M2 教程 科技爱好者周刊(第 373 期):数据模型是新产品的核心 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 科技爱好者周刊(第 372 期):软件界面如何设计 大模型比拼:MiniMax M2 vs GLM 4.6 vs Claude Sonnet 4.5 科技爱好者周刊(第 371 期):一个乐观主义者的专访 科技爱好者周刊(第 370 期):正确的代码高亮 错误处理:异常好于状态码 科技爱好者周刊(第 369 期):Tim 与罗永浩的对谈 科技爱好者周刊(第 368 期):不要这样管理软件团队 一天之内,智谱和 Anthropic 都发了最强编程模型 科技爱好者周刊(第 367 期):Nano Banana 的几个妙用 科技爱好者周刊(第 366 期):旧金山疯狂的 AI 广告 科技爱好者周刊(第 365 期):流量变现正在崩塌 科技爱好者周刊(第 364 期):最难还原的魔方 科技爱好者周刊(第 363 期):最好懂的神经网络解释 科技爱好者周刊(第 362 期):GitHub 工程师谈系统设计 科技爱好者周刊(第 361 期):暗网 Tor 安全吗?
科技愛好者週刊(第 343 期):如何阻止 AI 爬蟲
阮一峰 · 2025-03-28 · via 阮一峰的网络日志

這裡記錄每週值得分享的科技內容,週五發佈。([通知] 下週清明假期,週刊休息。

本雜誌開源,歡迎投稿。另有《誰在招人》服務,發佈程序員招聘信息。合作請郵件聯繫[email protected])。

封面圖

杭州臨平的"天空草莓"農場,草莓種在懸空的鋼架上,可以按需升降。(via

如何阻止 AI 爬蟲

AI 大模型公司,正在瘋狂收集訓練數據。

它們派出無數爬蟲,在互聯網上無節制地抓取數據。爬蟲數量之多、頻率之高,堪比 DDoS 攻擊。

上週,代碼託管網站 SourceHut 的站長,公開發表文章(下圖),痛斥 AI 爬蟲太過份,服務器無法承受訪問壓力,中斷服務。

他非常生氣,這些爬蟲根本不遵守 robots.txt 文件,Git 倉庫的每個頁面、每個鏈接、每個提交都要爬取。

它們來自全球數萬個 IP 地址,用戶代理(user-agent 字段)也是隨機的,偽裝得像真實用戶,難以有效攔截。

最可氣的是,它們今天爬完了,過了六小時,又來爬同樣的內容!

每一週,他要用20%~100%的工作時間,處理這些爬蟲造成的服務器壓力。SourceHut 已經中斷服務好幾次,對於一個 SaaS 工具,這是致命的。

最後,他說不只他遇到這種事,整個行業都深受其害。

"我的系統管理員朋友,都在處理同樣的問題。每次我坐下來和他們喝啤酒或吃晚餐時,我們很快就會抱怨機器人。這些對話中的絕望是顯而易見的。"

那麼,有什麼辦法,可以對付這些 AI 爬蟲?

最簡單的方法,就是使用 Cloudflare 公司的免費防護,它的 CDN 可以幫你擋掉 AI 爬蟲。

但是,有些企業級服務不適合使用 Cloudflare,這時你就必須自己來擋爬蟲。

今天,向大家介紹一個專門對付爬蟲的工具 Anubis

它是一個採用工作量證明的反向代理。所謂反向代理,就是目標網站的所有訪問請求,都會重定向給它

你首先要架設一個它的實例,然後把這個實例放在目標網站之前,當作反向代理(比如像下面設置)。

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、中國礦業大學研發了一款太空挖礦機器人

它共有6足,其中3個是前進的輪子,3個是挖礦的爪子。

2、英國民眾本週紛紛報告,夜空中發現螺旋狀的雲

英國氣象局調查後宣佈,那是獵鷹9號火箭發射時,快速旋轉的箭體噴出的尾氣。

尾氣在太空中瞬間凍結,經過太陽光反射,看上去像雲一樣。

3、科學家提出,生命起源地可能不是大海,而是封閉的大型碳酸鈉湖泊。

因為生命起源的化學反應,需要很高的磷濃度,但是自然界(包括大海)的磷含量很低,只有富含磷的碳酸鈉湖泊符合條件。

4、盈通公司推出一款有香味的 GPU

這款 GPU 內置了香味劑。運行時,它的散熱風扇就會將香味吹出去。

5、其他

(1)根據 Cloudflare 統計,41%的互聯網登錄使用洩漏的密碼,原因是大部分用戶習慣複用同樣的密碼。

(2)中國睡眠研究會統計,2025年中國人夜間平均睡眠6.85個小時,比去年增加6分鐘。入睡時間平均為0點18分,比去年晚了17分鐘。

(3)一項研究提出,每天的進食時間限制在8小時之內,其他16小時不進食,有利於肥胖者減肥,改善健康。

文章

1、Gemini 2.5 Pro 模型

本週,谷歌發佈它的最強模型 Gemini 2.5 Pro,迅速登頂。

著名程序員 Simon Willison 對其進行測評,評價很高。

另有一個程序員讓其執行一個非常複雜的任務,它想了半天后說,這個任務太複雜,不可能在一個步驟中完成,只能做出一個簡化版。

這讓人非常震驚,因為以前的 AI 遇到做不了的事情,只會給出錯誤的答案,而現在竟然會在分析後,承認超出了自己能力。

2、谷歌將不開放安卓的開發(英文)

這篇報道稱,谷歌將完全私有化安卓的開發,不再接受外部的代碼提交,以避免安卓開源版 AOSP 與內部版本之間合併分支的麻煩。

以後,谷歌會把安卓新版本先提供給 OEM 廠商,然後再發一個不接受外部提交的開源 AOSP 版。

3、Next.js 的中間件漏洞(英文)

本週,Next.js 爆出一個高危漏洞。如果登錄步驟是在中間件裡面完成,那麼可以繞過這個步驟,直接進入登錄狀態。本文簡要介紹什麼代碼導致了這個漏洞。

4、TypeScript 如何寫函數類型(英文)

本文是一篇初級教程,介紹函數的類型在 TypeScript 的三種寫法。

5、我對 MCP 的批評(英文)

MCP 是 Anthropic 公司提出的一個 AI 應用的接口協議,作者認為它並不好用,給出了自己的理由。

6、只使用 ESM 模塊(英文)

本文提出,現在可以放棄 JS 語言的 CommonJS 模塊了,只使用 ESM 模塊,一個原因是require命令已經支持加載 ESM 模塊了。

工具

1、CSS FlexCode

開源的 VS Code 插件,通過圖標生成 flex、grid 佈局的 CSS 代碼。(@xutao-o 投稿)

2、StreamCap

一個桌面應用(支持 Windows 和 Mac),基於 FFmpeg 進行直播錄製,覆蓋40+國內外主流直播平臺。(@ihmily 投稿)

3、Bilibili History Analyzer

B 站歷史觀看記錄管理工具,可以保存觀看記錄,支持視頻下載、數據分析、AI 摘要等功能,採用 Python + SQLite 開發,分為前端和後端。(@2977094657 投稿)

4、GoRead

一個用 Go 語言編寫的終端裡面的 EPUB 閱讀器。(@Ray-D-Song 投稿)

5、GateShift

一個 Go 語言寫的命令行工具,用於一行命令切換網關,適合同時有 OpenWrt 路由和默認路由的環境。(@ourines 投稿)

6、Drawnix

開源的在線白板工具,集成了思維導圖、流程圖、畫筆。(@pubuzhixing8 投稿)

7、小米筆記的 Obsidian 插件

它將小米雲服務裡面的小米筆記,轉換為 Markdown 格式保存到 Obsidian 文件夾。(@emac 投稿)

8、wxlogin

一個基於 Next.js 的開源應用,基於微信公眾號的網站登錄,用戶通過公眾號獲取驗證碼,從而在網頁端登錄。(@liyaodev 投稿)

9、Docxy

開源的 Docker Hub 鏡像代理服務,可以通過它拉取容器鏡像。(@harrisonwang 投稿)

10、Bondma

一個開源的多語言翻譯管理平臺,提供直觀的 Web 界面。(@HeroIsUseless 投稿)

11、DeepPDF

免費的 PDF 文件翻譯網站,比如英文 PDF 翻譯成中文,保留排版不變。(@icaohongyuan 投稿)

12、RSSPod

收聽、訂閱播客的網站。(@Jaksay 投稿)

13、Supa Simple Socket

網友投稿的 WebSocket 的 JS 客戶端庫,支持心跳機制、斷點重連、事件訂閱和文件傳輸。(@JustinGastby 投稿)

14、Inscribed.app

一款在線工具,基於幻燈片製作創意草圖和動畫。 (@chunrapeepat 投稿)

15、LinkAndroid

開源的手機連接助手,方便連接 Android 和電腦。(@modstart 投稿)

16、Teleprompter.today

一個在線的提詞器,為演講者、視頻創作者和直播主播提供文本提示,可以定製各種屬性。(@s87343472 投稿)

AI 相關

1、Web Design AI Agent

開源的 AI 應用,根據文字描述和圖片生成網頁,使用 Claude AI 模型,部署在 Cloudflare worker。(@mggger 投稿)

2、AigcPanel

開源的 AI 數字人生成工具。(@modstart 投稿)

3、EmojiMyFace

免費的 AI 擋臉工具,將臉部替換成 Emoji 符號。(@Takea-nap 投稿)

4、aisubtranslate.top

AI 模型翻譯字幕文件的免費網站。(@LetheTK 投稿)

資源

1、DNS 速度測試

這個網站測試從你的計算機到世界主要公共 DNS 服務器的速度。

另有一個類似的命令行工具 dnspy。(@xxnuo 投稿)

2、Orbit

該網站提供一種可視化的方式,發現你喜歡的新音樂。

3、Top Hacker News

該網站展示"黑客新聞"實時的熱門文章,有插圖和內容總結。(@heyppen 投稿)

4、MusicMint

一個 AI 音樂網站。(@250465043 投稿)

5、旅行插頭顧問(Travel Plug Advisor)

該網站查詢世界各地的插頭類型和電壓。(@imowen 投稿)

圖片

1、地球和太陽的大小

太陽的大小遠超地球,直徑是地球是109倍,體積是130萬倍。

上圖中,左下角的藍點就是地球。

所以,一丁點的太陽能,就足夠地球使用。

2、AI 生成表情包

上週,OpenAI 開放了 GPT-4o 的圖片生成功能。網友發現,只要上傳一張圖片,就可以用它生成表情包,效果極佳。

提示詞是:"請把照片裡面的角色畫成 Q 版,並用12個動作和文字做成表情包。"

文摘

1、為什麼重新發明輪子

我喜歡從頭開始寫東西,經常有人說,我在重新發明輪子。

我這樣做有好幾個理由。

(1)學習。通過重新發明輪子,我學到了很多東西,知道了工作原理,以及怎麼動手做。

(2)定製。沒有一種輪子適合所有情況。通過創建自己的輪子,我可以根據具體情況定製,讓它更適合我。

(3)創新。現有的一些輪子很糟糕,重新發明輪子時,就有機會探索新的可能性。

(4)享受。事實上,前面三條理由可以不存在,重新發明輪子只是因為我喜歡動手,出色完成工作時,我會有一種滿足感。

但是,我不推薦你也這樣做。重新發明輪子並不都那麼美好,有一些不可忽視的缺點。

(5)重新發明輪子可能很耗時,需要投入大量時間。

(6)最終產品可能不如現有解決方案。

(7)容易陷入無限遞推的困境。為了製造輪子,我還必須重新發明錘子嗎?

所以,如果你想重新發明輪子,一定要想清楚兩點。第一,你有足夠時間嗎,尤其是涉及其他人的情況下。第二,重新發明的範圍(或者說,你不打算重新發明什麼),以免不必要地偏離主題。

言論

1、

一個優秀程序員,最開始是實施者(implementer),然後進化到解決者(solver),最後變成發現者(finder)。

-- 《實施者、解決者和發現者》

2、

如果你正在開發一款希望長久使用的產品,那麼前端框架就是你最不需要做的技術決策。你爭論哪一個框架好的時間,都是在浪費精力。

無論你選擇什麼框架,5年後都會過時,即使那時你選擇的框架還存在,也會變得完全不同,這就是前端社區的運作方式。

-- 《前端跑步機》

3、

在2025年開發 Web 應用,有點像組裝宜家傢俱。你必須拼湊和配置許多單獨的服務:前端、後端、cdn、https、數據庫、身份驗證、付款......

你的工作不是寫代碼,而是配置、管道、編排、工作流、最佳實踐。

-- Andrej Karpath,著名 AI 科學家

4、

憤怒是一種具有破壞性的情緒,會讓人產生報復的慾望,這不利於你的根本利益。更理性的方法是,不要先想到報復,而要想想你與對方有沒有共同利益,尋求合作和諒解。

-- 《超越憤怒》

5、

各種宗教都驅逐異教徒,不是因為他可能是錯的,而是因為他可能是對的。

-- Edsger W. Dijkstra

往年回顧

xz 後門的作者 Jia Tan 是誰?(#296)

永不丟失的網絡身份(#246)

掌機的未來(#196)

網課應該怎麼上?(#146)

(完)