一位独立站长最近贴出一份反爬笔记,标题很直白:《如何拦住一部分机器人》。方法不新鲜,狠的是尺度——只要访客用的是HTTP/1.1协议,直接403。
这一条规则顺手就把Googlebot也拦在门外。作者观察到,Google爬虫的协议栈更新慢,不少请求至今还停在HTTP/1.1——这是他自己长期盯日志得出的经验判断,不代表所有搜索爬虫、所有代理服务都符合这个规律。
这不是大厂公告,是一个不用CDN、自己扛服务器的站长,把多年访问日志和路由技巧攒成的一套边界防御手册。他也把话说在前头:这套方法只适合非营收环境,上线前得先拿两三年日志回测,不是抄来就能用的成品。
拦什么、怎么拦、谁被误伤
方案分四层,核心是多信号叠加,不是单条规则说了算。
| 层级 | 拦截依据 | 主要误伤对象 |
|---|---|---|
| 协议层 | 非HTTP/2请求直接拒绝 | Googlebot等协议更新慢的爬虫、部分老旧客户端 |
| 网段层 | 按ASN/数据中心网段做黑洞路由 | VPN、Tor用户、云服务器访问者 |
| 信号层 | UA、Accept-Language、Sec-Fetch-Mode等请求头组合 | 非英语和西班牙语用户、请求头残缺的老浏览器 |
| 执行层 | nftables在内核层直接丢包 | 无独立误伤对象,负责把前三层的判断真正落地 |
作者的判断很直白:多数低质量机器人图省事,协议栈老旧、请求头残缺、懒得伪装UA。这套方案本质是在利用这种偷懒,不是在证明UA或协议有多难伪造——真想伪装的对手照样能绕过去,材料里也只说“多数机器人懒得伪装”,不是“无法伪装”。
为什么“有效”,又为什么危险
作者反复强调的优点是:黑洞路由几乎不占CPU,内核层面直接丢包,比Nginx里跑一堆正则判断轻得多。这是他自述的经验,没有给出具体压测数字。
真正的代价在粒度上。按协议版本封锁,Googlebot陪绑;按整段ASN封锁,VPN和Tor用户一起进黑名单;按请求头组合封锁,非英语和西班牙语用户首当其冲。这些规则一旦上线,误伤是成片的,不是零星几个IP。
我的判断:谁该学,谁别碰
维护个人站点或自建服务的技术用户,可以把这套方法当参考,但别直接照搬规则表。作者自己都要求先用两三年访问日志回测,你的流量结构和访客来源跟他不一样,规则硬搬过来大概率水土不服。真想试,先从执行层和协议层这类风险较低的规则起步,网段和语言这两层误伤面最大,留到最后再上,甚至可以先只观察不拦截。
关注爬虫治理和独立网络的读者,这件事更值得看的是方向。早期互联网的设计哲学是端到端连通,尽量少设关卡;这些年被扫描器和抓取工具逼到墙角,独立站长开始反过来在自家门口筑墙。这是防御性收缩,不是理念倒退,但方向确实变了。
对靠可达性吃饭的业务——电商、内容变现站、SaaS落地页——这套配方基本不能碰。搜索流量是收入,VPN和云访客是常规用户群体的一部分,任何一层误伤都可能变成业务事故,不是技术账,是收入账。
接下来最该盯的,是这类规则会不会从个人博客圈子扩散到中小商业站点。如果扩散开,Google和其他搜索引擎的爬虫协议栈更新会不会被倒逼加速,是个值得关注的变量;如果没人跟进,这就还是一小撮技术爱好者的自留地实验。
宁可错杀,不可放过——这句老话原本形容乱世里的猜忌逻辑,放在这里意外贴切。作者选的就是这条路径,而且他自己也没打算给营收网站背书。这笔账,个人小站算得过来;靠可达性吃饭的业务,替自己算清楚了再动手。
