惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Forbes - Security
Forbes - Security
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
GbyAI
GbyAI
B
Blog RSS Feed
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
The Last Watchdog
The Last Watchdog
W
WeLiveSecurity
Webroot Blog
Webroot Blog
S
Security @ Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
月光博客
月光博客
博客园 - 聂微东
F
Fortinet All Blogs
H
Hacker News: Front Page
A
About on SuperTechFans
Application and Cybersecurity Blog
Application and Cybersecurity Blog
C
Check Point Blog
V
V2EX
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
N
News | PayPal Newsroom
Cisco Talos Blog
Cisco Talos Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
P
Privacy & Cybersecurity Law Blog
N
Netflix TechBlog - Medium
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
美团技术团队
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
Recent Announcements
Recent Announcements
The GitHub Blog
The GitHub Blog
Google Online Security Blog
Google Online Security Blog
T
The Exploit Database - CXSecurity.com

愆伏

vue feedback 指令开发 通过webpack对css压缩后所引起的重名问题 NPM 撤回已发布的版本 昆虫有趋光性吗 数组转成字符串(css 属性) 关于grid布局的一些思考 阿里云和腾讯云网站字体族对比 Vue组件抛事件和Function prop的差别 Vue 事件参数传递 Vue Data里面下划线命名无效并报错 使用sublime中的正则处理数据格式 通过nodejs创建目录与文件 macOS 下npm run dev 无法局域网访问 mac 下使用ssh访问非22端口的gitlab 世界是平的,在科学上网之后 使用sublime text3和Markdown来写博客 如果非要给一个标题,那就是2014年非工作总结 不专业呢,就别捣乱 对知乎大号怒撤事件的一点看法 拒绝SB思维 嘀嘀与快的的商业博弈 关于收藏夹功能的思考 你居然都不用微信 一个英语培训机构的外呼电话 智商是硬伤就无解了 扁鹊三兄弟 竖子不足与谋 美丽说、蘑菇街今天一定开了好几个小时的会 个人独立博客会死掉吗? iPad作画 google reader即将关闭,谁来候补? 去年 美国人又火星了 一个简单的flash射击游戏 Draw an angry bird with pure CSS 用css3画一坨屎 一只音箱——漫步者M0pro 瓢虫图标 如果能够收集到世界上所有人的梦 作为一名产品经理 wordpress换域名 程序员和站长之间资源的交换 独角仙饲育日记1 男人是得有点装备的 镇江火车站、新汽车站到香逸渔港大酒店路线 jquery的slideUp、slideDown在IE中的闪动bug 《玩赚你的网站》是本难得的好书 腾讯微博邀请,欢迎自取 福特2010最新款家用普及型车 关于小霸王是否可以玩魔兽世界的问题 君要臣死,臣不得不死 wordpress主题发布:iCake 1.0 脆弱的域名服务 舍身成仁,舍己为人 欲练神功,挥刀自宫——在没有google之后 杯具掉的手作软陶皮卡丘 凶猛的阿凡达 js+css控制字体变换 2009年下半年南艺自考设计素描(本科) 愤怒摔食图——去TMD的xxx 改裤衩 紫金山捉虫记 态度问题还是能力问题 慷慨的饭店老板 南艺自考顺利达标 2009上半年南艺艺术设计自考毕业设计 说说产品经理-前言 在线生成卡通头像 CG weaver 1~3期打包下载 育儿网招聘网页设计师 google calendar的另类用法 互联网产品、运营二三事 小情调 干切牛肉雪菜面加煎蛋x2 永远的龙珠 M8:我不是山寨 终于回来了 还不都为了大客户 古典音乐——冷笑话 豆瓣盈利能力堪忧? 骑马与砍杀(mount&blade)——另类的爽快 溺爱的代价 开心不开心? 超赞的视频广告——wario land shake 神奇的《孢子spore》 该相信用户的话吗? chrome——google浏览器真的来了! 浏览器:web世界之门 赤壁——三国梦 项目管理就是博弈 Pia ji 一声的快感 Memories 拿来主义 一声叹息 禅心 LBS^2转到wordpress2.5 尽我们所能帮助灾区,希望灾民平安度过难关 游高崇寺 Avant Browser的复兴 “知”的提升
Codex 治好了我的博客不能被 VXNA 抓取的毛病
tortorse · 2026-05-31 · via 愆伏

今年 3 月,我发现一件怪事:我的博客明明更新了,但 V2EX 的 VXNA 里一直没有新文章。

我还在 V2EX 上发过帖子问这件事。当时我的判断很简单:我的博客能打开,RSS 也能打开,那大概率不是我的问题,可能是 VXNA 那边出了什么状况。

后来这事就放下了。我当然在意,只是没有太多时间继续查。再加上我当时也没想到可以让 AI 跟我一起把这个问题一点一点查清楚。

直到最近,我在 V2EX 上看到有人评论说,自己的博客迁移到 Cloudflare Workers 之后,VXNA 就能抓到了。我才想起来:会不会问题不在 RSS 内容,而在我的托管和缓存这条链路上?

于是我把这件事重新翻出来,让 Codex 一起查。说是“一起查”,其实我做的事并不多:我告诉它自己 3 月在 V2EX 发过帖子,让它自己去找;我把浏览器里的 Cloudflare 后台交给它,再把我知道的线索一条一条补给它。点页面、看响应、查配置、改规则,这些具体活都是 Codex 干的。

最先动的是 RSS 数量,但这不是我一开始想到的。我的博客是 Hexo 生成的,RSS 输出在 /atom.xml。Codex 自己分析了一下 atom.xml,发现这份 RSS 有 2M 多。它判断这个体积可能会增加抓取失败的概率,建议先限制 RSS 输出的文章数量,让 /atom.xml 变小一点。

但调完之后,VXNA 还是没有更新。

这下基本可以先放过 RSS 大小了。

我让 Codex 继续查。它换了个方向:先看线上 feed,再看 VXNA 记录的地址,接着查 Cloudflare 有没有拦。

查下来,RSS 内容正常,VXNA 里的 feed 地址也没变。VXNA 页面里还能看到我的旧文章,说明它以前确实抓成功过。

Cloudflare 后台里,AI Crawl Control 没有挡,Under Attack Mode 没开,安全分析里也没有看到 /atom.xml 被拦。

Codex 还试着在 Cloudflare 里找 VXNA 的来访记录,但没找到明确证据。这里我提醒了一句:既然 VXNA 以前抓到过,而且那时我没有给 /atom.xml 单独设 Cloudflare 缓存,那它当时很可能一路访问到了 Vercel。

于是 Codex 又去看 Vercel。结果也没查出旧记录,因为 Vercel Hobby 版能看的日志很有限,没法倒回去看 3 月以来 VXNA 到底有没有访问过。

Codex 最后盯上了另一个细节:/atom.xml 当时在 Cloudflare 上没有被边缘缓存住,请求会继续打到 Vercel。Vercel 返回本身没毛病,但 VXNA 的请求可能就在这一步失败。

于是 Codex 建议我在 Cloudflare 里给 /atom.xml 单独加一条 Cache Rule。

规则很简单:

1
2
3
URI Path equals /atom.xml
Cache eligible
Edge TTL: 2 hours

加完以后,Codex 又去验证了一下缓存有没有真的生效。结果是生效了。

这时 /atom.xml 已经被 Cloudflare 边缘缓存住了。VXNA 再来抓的时候,不需要再绕到 Vercel。

中间我还问过一个问题:能不能验证 VXNA 到底有没有来?

Codex 还提过一个办法:给 /atom.xml 加一层很小的 Worker,专门记录访问。但我最后没做。这个办法主要用来抓证据,对修问题帮助不大。现在 feed 已经能正常返回,缓存也已经调好,没必要为了证明一件事去改变生产路径。

我本来打算等 24 到 48 小时再看。

结果没多久,我发现 VXNA 已经抓到了。

这件事到这里可以先下一个谨慎的判断:RSS 内容没问题,把 RSS 变小也没解决。起作用的那一下,是让 Cloudflare 把 /atom.xml 稳定缓存起来。

我也不想直接说“问题就是缓存”,或者“Vercel 坏了”。

我现在倾向于把它理解成一条链路的问题:VXNA 来抓 atom.xml 时,要先经过 Cloudflare,再到 Vercel。我们自己请求 Vercel 返回正常,Cloudflare 也没有明确拦截,但没有边缘缓存时,VXNA 的请求可能在 Cloudflare 到 Vercel 之间失败。更细的原因没法确认,因为没有 VXNA 那边的日志。

而且它之前是好的。VXNA 以前抓到过我的博客,从今年 3 月开始才不再更新。这很像 VXNA 那边在 3 月前后换了网络、机器、抓取方式,或者某个外部环境变了。这个变化刚好影响了它访问我这条“Cloudflare 再到 Vercel”的路径。

我手里的证据只能支持一件事:把 atom.xml 放到 Cloudflare 边缘缓存之后,VXNA 能抓到了。

但从结果看,给 RSS 一个稳定的边缘缓存,是对的。

这次我对 Codex 的感受也没那么神。它没有凭空想出一个答案,更像是我终于有了一个可以替我动手查后台、跑命令、比对结果的人。

我提供的东西其实很杂:3 月在 V2EX 发过帖这条旧线索,别人说迁到 Cloudflare Workers 后好了这条评论,我已经打开的 Cloudflare 后台,还有我对这件事的怀疑。具体帖子是 Codex 自己搜出来的。以前这些信息都在我脑子里,散着放着。我自己要查,就得找时间一点一点翻。最后很可能查到一半,又被别的事打断。

这次不一样。我把这些线索丢给 Codex,又把目标说清楚:我要知道 VXNA 为什么抓不到,以及有什么小改动能先解决。剩下的事,它就自己顺着往下查。

它先看 RSS 里到底有没有新文章,再看 VXNA 里记录的 feed 地址,再去 Cloudflare 后台找有没有被拦,找不到 VXNA 来访记录后,又根据我的提醒去 Vercel 看日志。中间它还提出过要不要加 Worker 记录访问,但我们最后没做,因为那东西主要是抓证据,对修问题帮助不大。

我觉得有意思的是这里。

我没有真的写什么代码,也没有自己去翻一堆文档。我做的主要是给信息、说清楚目标、做判断、决定让它改哪里,以及在它想加新东西时问一句:这个真的有必要吗?

这个关系有点像我把一个问题交给一个很能干、但需要我不断补上下文的助手。它不会凭空知道我 3 月发过帖子,也不会知道我为什么突然想起 Cloudflare Workers。可只要我把这些信息给它,再把目标讲清楚,它就能自己去查,自己试,自己把问题解决到能用的程度。

最后修好的地方反而很小:只是一条 Cloudflare Cache Rule。

但这个“小”不是凭空来的。它前面有一堆确认和排除。没有那些确认,我可能会继续改 RSS、乱改 Vercel、甚至直接把博客迁到 Cloudflare Workers 上。V2EX 上有人说换到 Cloudflare Workers 部署博客就好了,这个建议不是没有道理,因为它相当于绕开了 Vercel 这层,让 Cloudflare 自己直接提供内容。但对我这次的问题来说,没必要一上来就搬家。

先把 /atom.xml 缓存好,就够了。

我挺喜欢这个结果。

它不高级,但很像真实世界里的技术问题:最后改动很小,可你得先把路走明白。