被 CDN 防火墙“背刺”的网站验证
【引言】
最近我在折腾一个建站工具,想接入一个推广联盟平台(Impact),赚点服务器钱。按照官方教程,我要在网页的 <head> 里加上一段验证代码。
本以为复制粘贴就能搞定,结果却让我折腾了几个小时。记录一下这个离谱的踩坑过程,也给同样在折腾独立博客的朋友提个醒。
【排查过程:我是怎么被机器“骗”的】
一开始,我把 <meta name="impact-site-verification" content="..."> 的代码放进了 Halo 博客的后台“代码注入”里。
我去点了平台验证,失败。
我想,可能是代码格式不对,把 value 改成了标准的 content。还是失败。
我按 F12 检查网页源码,代码明明好端端地躺在 <head> 里!网页内容里也贴了纯文本,怎么就是不行?
【寻找元凶:CDN 缓存与格式玄学】
我查了资料,很多人说是因为 CDN 缓存。
我用的香港服务器,套了 qedge 的 CDN。于是我去 CDN 控制台刷新了缓存,心想这次总行了吧?结果平台依然提示我验证失败。这个时候,我甚至怀疑是不是要联系人工客服手动通过了。
【真相大白:防火墙的“无情背刺”】
就在我百思不得其解的时候,我突然想起来了!为了防止海外垃圾爬虫和攻击,我前段时间在服务器/CDN 安全组里,开启了“禁止海外(不含港澳)访问”的防火墙规则!
破案了!平台的验证爬虫服务器,绝大多数都在海外(比如美国、欧洲)。我开了禁止海外访问,它的机器来抓取我的网页时,直接吃了一个闭门羹(403 拦截),它连网页都打不开,怎么可能看得见我的验证代码?!
【解决方案】
去防火墙里,把“禁止海外访问”的规则暂时关掉 -> 回平台点击验证 -> 秒过!
验证通过后,我再把防火墙重新打开。
【总结避坑指南】
代码格式要标准:尽量用 <meta name="..." content="...">。
注意 CDN 缓存:改了代码一定要去 CDN 刷新缓存,不然爬虫抓到的是旧页面。
检查防火墙/安全组:如果你开了“禁止海外访问”或“严格的反爬规则”,记得把搜索引擎和验证平台的机器人 IP 加入白名单,或者暂时关闭规则。
希望这篇小记能帮到同样在折腾建站的你。
评论