结论:核心思路是限速加 UA 拦截加关键路径封禁,组合使用才有效。

① 先上限速,在 http 块定义 limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s,再在 server 或 location 里加 limit_req zone=req burst=20 nodelay,挡住高频抓取。

② 用 map 做 UA 黑名单,把 python、curl、scrapy、semrush 这类特征写进去,命中就返回 403,比 if 判断性能好。

③ 对搜索、列表页这类易被爬的路径单独加严限速,或要求带 Referer,空 Referer 直接拒绝。

④ 记得放行百度、谷歌等正规蜘蛛的 IP 段,否则会影响收录,配置完用 curl 模拟不同 UA 验证一遍。