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
- 对目标站点的请求频率有控制权,避免触发对方风控
具体怎么做
创建工作流并设定触发器
新建工作流,第一个节点用Schedule Trigger,设为每月1次。若想先手动验证,先放Manual Trigger并联到同一入口,测试通过后再换回定时。
写入配置参数
放一个Set或Code节点定义:testUrl(如https://example-shop.example/pricing)、bots数组(见下方配置材料)、browserUA(一个普通桌面Chrome UA)、secondsBetweenRequests(建议先设5秒)。后续所有节点从这里引用参数,避免散落硬编码。
抓取并解析robots.txt
用HTTP Request节点GET目标站根域的/robots.txt。接一个Code节点:对每个bot,在其UA组内收集Allow/Disallow规则,按路径最长匹配优先、等长时Allow优先、无匹配时视为允许并走通配符*组的规则,得出robotsVerdict。
按UA逐个真实请求
用Split In Batches或循环结构遍历bots,每个循环内HTTP Request节点把User-Agent头设为该bot的UA请求testUrl,开启'不抛出HTTP错误'以便拿到4xx/5xx状态码;循环末尾加Wait节点按secondsBetweenRequests节流。
浏览器对照请求
循环外再做一次HTTP Request,UA用browserUA,记录状态码与响应体长度作为controlStatus和controlSize,这是判定PARTIAL/CONTRADICTION的基准。
分类汇总
Code节点按规则分类:robots禁止且HTTP非200记BLOCKED;robots允许且HTTP 200且大小接近对照记ALLOWED;robots允许但被拦截记CONTRADICTION;收到429记RATE_LIMITED;状态200但响应明显小于对照记PARTIAL;其它记UNKNOWN。输出一行一个对象。
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