针对“流氓”爬虫,核心策略是 “拒绝礼貌,直接开火”。robots.txt 对它们形同虚设,必须在 Nginx 或 ESA 层面主动拦截。
参考资料
- 加密套件是用于在 SSL/TLS 握手期间协商安全设置的算法的组合。
- 将客户端到 ESA 边缘节点的 HTTP 请求强制重定向为 HTTPS。
- 开启 HSTS 后,可以减少第一次访问被劫持的风险,ESA 将响应 HSTS 头部:Strict-Transport-Security。
- “回源协议和端口”决定了 ESA 边缘节点向你的源站服务器发起请求时,用 HTTP 还是 HTTPS,以及连到哪个端口。
- 强制校验源站服务器返回的 SSL/TLS 证书是否合法有效
- "GET" "POST" "PUT" "DELETE" "PURGE" "HEAD" "OPTIONS" "PATCH"})
- 在 ESA 配置了“自定义缓存标签名称”(比如改成 ESA-Cache-Tag),源站就必须同步改用这个新标头名。
- 强制校验源站服务器返回的 SSL/TLS 证书是否合法有效
针对“流氓”爬虫,核心策略是 “拒绝礼貌,直接开火”。robots.txt 对它们形同虚设,必须在 Nginx 或 ESA 层面主动拦截。
针对“流氓”爬虫,核心策略是 “拒绝礼貌,直接开火”。robots.txt 对它们形同虚设,必须在 Nginx 或 ESA 层面主动拦截。
🎯 先认清“流氓”特征
典型代表如 Bytespider(字节跳动)、SemrushBot、AhrefsBot、MJ12bot 等。它们往往无视 robots.txt,高频抓取无意义页面甚至 API,直接拖垮 PHP 8.3-FPM。
🛡️ 首选方案:ESA 边缘精准封禁
在 ESA 控制台创建安全规则,直接匹配特征并执行拦截:
匹配条件:
User-Agent包含Bytespider、SemrushBot、AhrefsBot等关键字。执行动作:选择 “拦截”(Block)。这样请求在边缘节点就被丢弃,根本不消耗源站资源。
⚙️ 兜底方案:Nginx 直接 return 444
如果请求穿透到源站,用 444 指令(Nginx 特有,直接断开连接且不返回任何内容)最省资源:
if ($http_user_agent ~* (Bytespider|SemrushBot|AhrefsBot|MJ12bot|DataForSeoBot|DotBot|PetalBot|ClaudeBot|GPTBot|CCBot)) {
return 444;
}注意:不要用
403或404,因为流氓爬虫收到响应后会立即重试,444的静默断开能让它们多耗点时间在超时上。
💡 关键提醒
验证效果:配置后用
curl -I -A "Bytespider" 你的域名测试,应返回连接关闭或超时。保留搜索:务必单独放行
Googlebot、Baiduspider等正规搜索引擎,避免误伤收录。动态更新:流氓爬虫 UA 会变种,建议定期查看 Nginx 日志里的高频陌生 UA,补充进拦截列表。
时间:2026-09-28 12:09:22
来源:https://yun.ciilii.com/
