Robots 分析 API

抓取并解析网站的 robots.txt:按 User-agent 分组的规则、Crawl-delay、Sitemap,并可判断某个爬虫能否抓取指定路径

数据来源:目标网站 /robots.txt

返回统一的 JSON 格式 { code, message, cached, stale, updatedAt, data },支持跨域,免注册每天可免费调用 100 次,注册后每天 10000 次。

解析 robots.txt,判断爬虫能否抓取某路径

GET /api/robots

请求参数

  • url(必填):网站地址(http / https),会读取其根目录的 /robots.txt,示例 https://www.baidu.com
  • path:要判断的路径(如 /search?q=1,也可以是完整网址);传了 path 或 agent 才会返回 check,示例 /baidu
  • agent:爬虫名称(User-agent 的产品名,如 Googlebot、Baiduspider);不传时按 * 组判断,示例 Baiduspider

返回字段

  • url(string):读取的 robots.txt 地址(站点根目录,如 https://github.com/robots.txt)
  • finalUrl(string):跟随跳转后实际读取的地址(最多跳转 5 次);没有跳转时与 url 相同
  • status(number):robots.txt 的 HTTP 状态码
  • found(boolean):是否成功读取到 robots.txt(状态码 2xx)
  • policy(string):整体策略:rules 按文件中的规则;allow-all 文件不存在(4xx),允许抓取全部;disallow-all 服务器错误(5xx),按 Google 规范暂时视为全部禁止
  • note(string|null):补充说明(如"robots.txt 不存在……允许所有爬虫抓取全部路径"、文件超过 500KB 被截断);正常解析时为 null
  • size(number|null):读取的 robots.txt 大小(字节,解压后,最多 512000);未读取到时为 null
  • truncated(boolean):文件是否超过 500KB 被截断(超出部分不解析)
  • groups(array):按 User-agent 分组的规则,顺序与文件一致;同一爬虫出现在多个组时判断时会合并
  • groups[].agents(array):该组适用的 User-agent 列表(原文,如 *、Googlebot)
  • groups[].agents[](string):单个 User-agent
  • groups[].rules(array):该组的 Allow / Disallow 规则,顺序与文件一致;空的 Disallow(表示不限制)不列出
  • groups[].rules[].type(string):规则类型:allow 允许、disallow 禁止
  • groups[].rules[].path(string):路径规则原文,从路径开头匹配;* 匹配任意字符,结尾的 $ 表示必须到路径末尾(如 /*.pdf$)
  • groups[].crawlDelay(number|null):Crawl-delay(秒,两次抓取的最小间隔;Google 不支持该指令,Bing、百度等部分爬虫参考);未设置时为 null
  • sitemaps(array):Sitemap 地址列表(绝对地址,已去重);没有声明时为空数组
  • sitemaps[](string):单个 Sitemap 地址
  • check(object|null):路径判断结果;没有传 path 和 agent 时为 null
  • check.agent(string):判断用的爬虫名称(未传 agent 时为 *)
  • check.path(string):判断的路径(含查询字符串,以 / 开头)
  • check.group(string|null):生效的 User-agent 组名(小写产品名):先找名称完全相同的组,其次找名称是其前缀的组(如 googlebot 之于 googlebot-image),最后用 *;没有可用的组或 policy 不是 rules 时为 null
  • check.allowed(boolean):是否允许抓取:按 Google 规范取匹配长度最长的规则,Allow 与 Disallow 一样长时 Allow 优先,没有匹配的规则时允许;policy 为 allow-all 时为 true、disallow-all 时为 false
  • check.rule(object|null):决定结果的规则;没有规则匹配时为 null
  • check.rule.type(string):规则类型:allow / disallow
  • check.rule.path(string):规则的路径原文