AI PLAY玩法更新持续收录
← 回到更新流

2026-10-06 · 原文发布日

每月审计AI爬虫能否访问你的页面

这个n8n模板每月定时运行:先抓取目标站点的robots.txt,按最长匹配和通配规则判断各AI与搜索爬虫是否被允许访问指定页面,再以每个爬虫的User-Agent真实请求页面并和普通浏览器对照状态码与响应大小,给出ALLOWED、BLOCKED、CONTRADICTION等结论,汇总后用Gmail发出报告。模板免费。

原文要点

n8n模板20481(作者Marek Stokowski,免费)按月定时运行:先抓取目标站点的robots.txt,按最长匹配与通配回退规则判断各AI与搜索爬虫是否被允许访问指定页面;再以每个爬虫的User-Agent真实请求页面,并与普通浏览器对照请求比较HTTP状态码与响应大小;把每个爬虫分类为ALLOWED、BLOCKED、PARTIAL、CONTRADICTION、RATE_LIMITED或UNKNOWN,汇总后通过Gmail把审计报告发给指定收件人。配置项包括testUrl、爬虫UA列表、浏览器对照UA和请求间隔secondsBetweenRequests。

这次做成什么

在自建n8n里搭一个每月运行的审计流程,对指定页面输出每种AI爬虫'名义允许/实际拦截'的对照结论并邮件送达,本页练习目标是审计一个示例站的定价页。注意:本页不附可导入的工作流JSON,需到n8n模板页获取原模板或按下列结构自建。

准备什么

  • 一个可运行的n8n实例(云版或自托管均可)
  • 一个已配置OAuth2的Gmail凭据用于发报告
  • 一个你有权审计的目标页面URL
  • 对目标站点的请求频率有控制权,避免触发对方风控

具体怎么做

  1. 创建工作流并设定触发器

    新建工作流,第一个节点用Schedule Trigger,设为每月1次。若想先手动验证,先放Manual Trigger并联到同一入口,测试通过后再换回定时。

  2. 写入配置参数

    放一个Set或Code节点定义:testUrl(如https://example-shop.example/pricing)、bots数组(见下方配置材料)、browserUA(一个普通桌面Chrome UA)、secondsBetweenRequests(建议先设5秒)。后续所有节点从这里引用参数,避免散落硬编码。

  3. 抓取并解析robots.txt

    用HTTP Request节点GET目标站根域的/robots.txt。接一个Code节点:对每个bot,在其UA组内收集Allow/Disallow规则,按路径最长匹配优先、等长时Allow优先、无匹配时视为允许并走通配符*组的规则,得出robotsVerdict。

  4. 按UA逐个真实请求

    用Split In Batches或循环结构遍历bots,每个循环内HTTP Request节点把User-Agent头设为该bot的UA请求testUrl,开启'不抛出HTTP错误'以便拿到4xx/5xx状态码;循环末尾加Wait节点按secondsBetweenRequests节流。

  5. 浏览器对照请求

    循环外再做一次HTTP Request,UA用browserUA,记录状态码与响应体长度作为controlStatus和controlSize,这是判定PARTIAL/CONTRADICTION的基准。

  6. 分类汇总

    Code节点按规则分类:robots禁止且HTTP非200记BLOCKED;robots允许且HTTP 200且大小接近对照记ALLOWED;robots允许但被拦截记CONTRADICTION;收到429记RATE_LIMITED;状态200但响应明显小于对照记PARTIAL;其它记UNKNOWN。输出一行一个对象。

  7. Gmail发报告

    把汇总结果拼成纯文本或简单HTML表格,接Gmail节点(选择已建的OAuth2凭据),收件人填审计负责人,主题带上月份与testUrl,发送后结束工作流。

可直接复制的材料

爬虫UA配置示例(bots数组)

本站编写的示例清单,UA字符串会随爬虫版本变化,正式使用前请到各官方文档核对最新UA;可自行增删爬虫。

{\n  \"testUrl\": \"https://example-shop.example/pricing\",\n  \"secondsBetweenRequests\": 5,\n  \"browserUA\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36\",\n  \"bots\": [\n    {\"name\": \"GPTBot\", \"ua\": \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot\"},\n    {\"name\": \"ClaudeBot\", \"ua\": \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ClaudeBot/1.0; +claudebot@anthropic.com\"},\n    {\"name\": \"CCBot\", \"ua\": \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; CCBot/2.0; +https://commoncrawl.org/faq/\"},\n    {\"name\": \"Googlebot\", \"ua\": \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\"}\n  ]\n}

输入与输出示例

本站虚构演示数据,未对任何真实站点运行;分类规则按模板描述自行实现。

输入

testUrl=https://example-shop.example/pricing;robots.txt中Disallow: / 针对CCBot,其余bot无规则;实测GPTBot返回200且大小正常,ClaudeBot返回403。

对应输出

报告关键行(虚构示意):\nGPTBot: ALLOWED (robots=allow, http=200, size=48210, control=48302)\nClaudeBot: CONTRADICTION (robots=allow, http=403)\nCCBot: BLOCKED (robots=disallow, http=403)\nGooglebot: ALLOWED (robots=allow, http=200, size=48155, control=48302)\n汇总:ALLOWED 2 / BLOCKED 1 / CONTRADICTION 1 / PARTIAL 0 / RATE_LIMITED 0 / UNKNOWN 0

做完检查这些

  • 定时触发器能在设定月份自动启动,手动测试也能完整跑完一轮
  • 报告中每个爬虫都带robots判定与HTTP实测两项证据,而不是只有单一结论
  • robots允许但被拦截的爬虫被明确标为CONTRADICTION而非ALLOWED
  • 429响应被识别为RATE_LIMITED并在下次运行重测
  • Gmail实际收到含全部爬虫行的汇总邮件

容易卡住的地方

  • robots.txt只表达站点意愿,CDN或WAF可能另行拦截,CONTRADICTION正是要抓这种不一致
  • 请求间隔太短会被限速甚至封IP,secondsBetweenRequests需按目标站承受力调整
  • 部分站点对未知UA返回200但给缩水页面,仅靠状态码会误判,需比较响应大小
  • robots.txt解析要处理通配符*组与最长匹配,写简化版容易得出错误的允许结论
  • Gmail OAuth2凭据过期会导致报告静默失败,建议给发送节点加错误分支

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Audit AI and search bot access using robots.txt checks and Gmail reports
原作者
Marek Stokowski
原始发布日期
2026-10-05T18:04:53.755Z
来源
https://n8n.io/workflows/20481