城市分站GEO系统爬虫限制完整判断方案

爬虫限制分三层:CDN/WAF边缘限流、Nginx/服务器IP限流、站点被搜索引擎降抓取预算;区分「误拦截正规AI/搜索引擎爬虫(豆包DoubaoBot、百度Baiduspider、文心Bot)」和「正常拦截恶意采集爬虫」,从状态码日志、抓取行为、收录流量、页面访问测试、配置规则5个维度综合判断。

一、第一层:HTTP状态码直接判定(最直观)

查看Nginx/CDN访问日志,筛选正规爬虫UA(DoubaoBot、Baiduspider、QwenBot、BaiduSpider-AI)对应的返回码,出现以下代表触发爬虫限制:

  1. 429 Too Many Requests(明确限流)短时间同一爬虫IP大量出现429,代表频率超限,CDN/Nginx开启速率限制,直接拦截抓取。

  2. 403 Forbidden(IP封禁/UA拦截)爬虫UA返回403,分为两种:

    • 全局拦截:所有爬虫统一403(robots、WAF误封);

    • 单IP封禁:单一爬虫IP持续403,其他爬虫正常。

  3. 503 Service Unavailable(服务器过载限流)并发抓取打满带宽/连接数,服务器临时拒绝爬虫访问,属于被动爬虫限制。

  4. 页面返回验证码(状态码仍200,隐性拦截)爬虫访问页面弹出滑块/文字验证,源码包含「安全验证、人机验证」关键词,CDN智能风控识别爬虫特征拦截,日志200但无法正常抓取内容。

正常无拦截标准

正规爬虫UA全部返回200 OK,无批量429/403/503,无验证页面。

二、第二层:服务器&CDN日志深度核验(精准定位拦截来源)

1. Nginx日志排查(自建服务器)

  1. 实时过滤爬虫UA日志:

tail -f /var/log/nginx/access.log | grep -E "DoubaoBot|Baiduspider|QwenBot"
  1. 统计限流标记:日志中$limit_req_status出现429/403,代表Nginx limit_req限流规则命中爬虫。

  2. 查看error.log:大量limiting connectionsrequest rate exceeded日志,说明连接/频率限制生效。

2. CDN后台日志排查(绝大多数分站使用CDN)

  1. 访问CDN「访问日志/抓取日志」,筛选AI爬虫UA;

  2. 查看拦截类型:频率控制、Bot风控、IP黑名单、UA拦截;

  3. 指标:爬虫回源率暴涨、缓存命中率暴跌,说明爬虫被拦截只能少量穿透回源;

  4. 告警:CDN触发CC防护、Bot防护、高频访问告警,代表爬虫被限制。

3. 区分拦截对象(关键)

  • 恶意采集爬虫(无名UA、Requests/curl特征)被拦截:正常防护,无需处理;

  • DoubaoBot、Baiduspider、文心Bot等正规AI爬虫大量429/403/验证:误触发爬虫限制,会直接大幅降低收录。

三、第三层:抓取行为数据异常(站长平台/爬虫监控)

1. 抓取频次断崖下跌(核心特征)

  1. 百度资源平台、豆包站长后台、自研爬虫监控查看每日抓取量

  2. 正常:爬虫抓取量平稳小幅波动(±15%);

  3. 触发限制:单日抓取量暴跌≥40%,持续2–7天无回升;

  4. 细分:新城市页面完全无抓取记录,旧页面抓取量腰斩。

2. 抓取延迟飙升

爬虫单次页面响应时间从<300ms涨到1s以上,CDN/服务器限流排队,属于软性爬虫限制。

3. 抓取拒绝占比升高

站长平台显示「抓取失败占比」持续>20%,失败原因为:访问超时、服务器拒绝、安全拦截。

四、第四层:收录&流量业务侧表现(限制带来的结果佐证)

若前三层日志无法确认,通过收录数据反向验证爬虫限制:

  1. 收录率持续下滑新增城市页面「已发现、未收录」占比大幅提升,爬虫抓取但无法完整读取页面,被过滤不收录;

  2. 总收录量连续两月下跌无大规模删页、无改版,收录持续减少,爬虫抓取预算被平台缩减(站点被判定低质/频繁拦截爬虫);

  3. AI自然曝光、本地关键词流量同步暴跌 豆包、文心、百度本地长尾词曝光量下滑50%+,爬虫抓取不足导致页面失去AI推荐权重;

  4. 新分站长期零收录 新建城市页面上线15天无收录,sitemap正常提交,大概率爬虫持续被拦截无法抓取。

五、第五层:手动测试验证(快速复现拦截)

测试1:模拟正规爬虫UA访问

使用curl携带标准爬虫UA请求任意城市页面,观察返回码与页面内容:

# 模拟豆包爬虫
curl -A "DoubaoBot" https://域名/城市目录/
# 模拟百度爬虫
curl -A "Baiduspider" https://域名/城市目录/
  • 返回429/403/验证页 = 触发爬虫限制;

  • 返回完整页面200 = 无拦截。

测试2:高频循环模拟抓取

循环10次同一爬虫请求,若前3次200,后续429,代表频率限流规则生效

测试3:白名单对比测试

  1. 将豆包、百度爬虫IP段加入CDN/WAF白名单;

  2. 复测抓取状态码、抓取量;

  3. 抓取量恢复、无429 → 确认是风控误拦截正规爬虫。

六、第六层:配置文件排查(找到限制源头)

  1. robots.txt错误拦截错误写入Disallow: /、屏蔽城市分站目录、屏蔽sitemap,主动禁止爬虫抓取,属于人为爬虫限制; 校验:站长平台robots检测工具,查看是否允许DoubaoBot/Baiduspider。

  2. Nginx限流配置limit_req_zonelimit_conn设置过低阈值,未对白名单爬虫放行,一刀切限流所有访问。

  3. CDN/WAF Bot防护策略开启「通用Bot拦截、高频访问拦截」,未添加AI爬虫UA白名单;CC防护阈值过低,爬虫并发直接触发拦截。

  4. 服务器防火墙/安全组iptables、云安全组封禁爬虫IP段,或连接数限制过低。

七、爬虫限制分级判定标准

1. 轻度限制(软性限流)

  • 少量429,抓取量小幅下跌20%以内;

  • 无403、无验证页面;

  • 收录小幅放缓,无断崖下跌; 影响:新页面收录周期拉长。

2. 中度限制(明显拦截)

  • 大量429,部分爬虫IP返回403;

  • 每日抓取量暴跌40%–70%;

  • 新增页面大量「已发现未收录」; 影响:城市分站收录率持续走低,本地流量下滑。

3. 重度限制(完全封禁爬虫)

  • 正规AI爬虫全量403/验证页面;

  • 爬虫抓取量接近0;

  • 全站收录持续清退,关键词流量近乎归零; 影响:GEO渠道彻底失效,所有城市分站无自然曝光。

八、快速排查流程(落地操作步骤)

  1. 导出CDN/Nginx访问日志,过滤DoubaoBot、Baiduspider等正规爬虫UA,统计429/403/验证页面占比;

  2. 查看站长平台抓取统计,确认抓取量是否断崖下跌;

  3. curl模拟爬虫UA访问,复现拦截状态码;

  4. 检查CDN/WAF Bot防护、Nginx限流、防火墙规则,确认是否未添加爬虫白名单;

  5. 对比收录数据,验证抓取受限是否同步带来收录下跌;

  6. 区分:拦截恶意爬虫(正常)/拦截正规AI爬虫(故障,需立即放开白名单)。

九、城市分站GEO专属避坑要点

  1. 城市分站页面量大、爬虫7×24持续抓取,CDN默认Bot规则极易误拦豆包、百度爬虫,必须单独配置UA白名单;

  2. 不要全局一刀切限流,给正规AI爬虫单独设置宽松Crawl-delay、无频率限制;

  3. 区分「恶意采集爬虫拦截」和「AI爬虫误拦截」,不要为防采集直接限制搜索引擎爬虫,会彻底丢失本地AI流量;

  4. 爬虫限制优先出现在CDN边缘节点,优先排查CDN防护策略,再看服务器Nginx配置。