不用 CDN 也能挡住大部分 Bot
How to Block Some of the Bots
我分享了一套无需 CDN 即可拦截劣质 Bot 的实战方案。从强制 HTTP/2.0 协议到利用 BGP 工具屏蔽数据中心 IP,再到通过 User-Agent 和 Sec-Fetch-Mode 等客户端信号进行过滤,这些方法能有效识别并阻断 GoogleBot 等过时爬虫。虽然这些策略可能误伤部分真实用户或搜索引擎,但通过仔细测试和调优,你可以在不依赖昂贵服务的情况下,大幅减少服务器上的垃圾流量。
这些方法我使用了很长时间且行之有效,但它们未必适合你,甚至可能误封你的亲戚或老板,请务必在充分测试后自行决定风险。
HN 评论区
146- AussieWog93
我这么说,是因为我运营着几个面向公众的网站,同时也抓取一些其他网站供自己的工具使用:大家为什么这么在意 Bot?
WordPress 加上缓存,在最便宜的 VPS 上也能处理每秒约 1000 次请求。一个真正的静态网站大概能处理 10 倍于此的量。
你们是用 Lambda 之类的东西来托管博客吗?
这基本上是不是强迫症?是为了漏洞防护?还是源于爬虫确实会影响服务的旧时代习惯?
- fxtentacle
我挺喜欢这个点子:给 169.254.169.254 加一个假的 cpanel 子域名,这样脚本小子们就会开始扫描他们自己的托管提供商,这很可能导致他们被标记或封禁。
- userbinator
如果你试图拦截任何非“批准”的 user-agent,你只是在助长浏览器垄断,并加剧反乌托邦。这正是像 RMS 这样的人几十年前就警告我们的。
如果流量体积或请求频率确实成了问题,就针对这些进行拦截。
(是的,我也无法访问该网站。不,我不会顺从。但我敢打赌,任何下定决心的人仍然能突破,就像 DRM 一样。)
- CqtGLRGcukpy
如果你无法阅读此内容,存档副本位于 https://archive.ph/d3236
- binaryturtle
410 状态码,响应体里还带了一个 "Sec-Fetch-Mode:" 字符串。我猜它以为我是 Bot?谢了!
没什么可读的,也没什么可看的,我走人。(天哪,现代网络真够烂的!)