核对抓取限制,关键是先确认限制发生在哪一层:是robots.txt规则、页面级meta robots,还是服务器返回状态与访问频率控制。推荐做法是“先看规则声明,再看实际响应”:用抓取工具或命令行请求目标URL,对比规则文件与实际返回,判断限制是否真的生效。若只改规则未验证响应,很容易误判。
抓取限制通常来自两个方向,核对方法不同:
<meta name="robots" content="noindex">、HTTP头中的X-Robots-Tag。这类限制写在明处,可直接读取。准备一份待核对URL清单,覆盖首页、栏目页、详情页和已提交的sitemap链接。同时确认你使用的抓取身份:搜索引擎官方抓取器与普通浏览器请求可能得到不同响应,核对时要固定一种身份,避免结论互相矛盾。
核对抓取限制时,常见两种处理方案:
/robots.txt,找到对应User-agent段落,检查目标路径是否被Disallow。优点是快,缺点是无法发现服务器层面的拦截。选择依据:如果怀疑是规则写错,先用方案A定位;如果规则看起来正常但页面仍不被抓取,必须用方案B。两种方案都做时,顺序应是先A后B,因为规则文件能解释部分异常响应。
最关键的一步是方案B中的状态码核对。200表示可正常抓取;403、429、503表示被拒绝或限流;404表示路径不存在,容易被误认为抓取限制。若返回200但内容为空或为验证页,说明限制可能来自前端渲染或反爬脚本,需要进一步查看响应体。
单次请求的结果不足以定论。做一组对照:
X-Robots-Tag与Retry-After,前者说明页面级限制,后者说明限流后的等待建议。判断结果:若只有目标URL返回403或429,而对照URL正常,限制大概率针对该路径或该抓取身份;若所有URL都异常,问题可能出在服务器、CDN或你的请求方式,而非页面级抓取限制。若robots.txt声明允许但实际返回403,应以实际响应为准,因为服务器配置优先于规则文件。
每次调整robots.txt、meta robots或服务器规则后,重新执行同一套请求,保留前后状态码与响应头记录。比较时注意:搜索需求、季节变化和抓取频率本身会影响请求结果,不能只看单日数据就断定改动生效。建议固定核对周期,例如每周抽检一次核心URL,把状态码变化与规则改动时间对齐。
如果发现限制来自限流而非规则,优先调整请求频率或联系服务器管理员,而不是反复修改robots.txt。规则文件解决的是“允许不允许”,限流解决的是“请求多不多”,两者不能互相替代。
下一步:从你的URL清单中挑出最近一次被拒绝抓取的地址,按方案B记录状态码与响应头,再与robots.txt逐条比对,确认限制层级后再决定改规则还是调频率。