参考资料

  1. 加密套件是用于在 SSL/TLS 握手期间协商安全设置的算法的组合。
  2. 将客户端到 ESA 边缘节点的 HTTP 请求强制重定向为 HTTPS。
  3. 开启 HSTS 后,可以减少第一次访问被劫持的风险,ESA 将响应 HSTS 头部:Strict-Transport-Security。
  4. “回源协议和端口”决定了 ESA 边缘节点向你的源站服务器发起请求时,用 HTTP 还是 HTTPS,以及连到哪个端口。
  5. 强制校验源站服务器返回的 SSL/TLS 证书是否合法有效
  6. "GET" "POST" "PUT" "DELETE" "PURGE" "HEAD" "OPTIONS" "PATCH"})
  7. 在 ESA 配置了“自定义缓存标签名称”(比如改成 ESA-Cache-Tag),源站就必须同步改用这个新标头名。
  8. 强制校验源站服务器返回的 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/