launch-audit
抓取预发布或线上网站,收集证据,并向相关人员提供一份可执行的报告。
黄金法则
只读,仅报告。 本技能中的所有操作都不会编辑网站、提交表单、修改设置、写入提供商的API或点击破坏性控件。每个发现都附带证据,供人工处理。
以下是其衍生出的另外四条规则,请在呈现报告时重申:
- 没有静默上限。 对覆盖范围的任何限制——最大页面数、深度、抽样页面、无法验证的外部链接——都将在 “未覆盖” 部分中按名称报告。
- 每个发现都有证据。 一个URL、一个状态码、一个头部值、一个截图路径。
- “未覆盖”绝不意味着通过。 您需要逐字将该部分内容告知相关人员。
- 跳过不等于通过。 每个跳过的检查都必须说明原因。
1. 收集输入信息
询问您尚不知道的信息。请不要猜测以下任何一项。
- 待审计的URL。 必填。
- 这是预发布环境还是线上环境? 预发布目标预计会被设置为 noindex;传递
--staging参数,以便将全站 noindex 从阻止项降级为信息项。在线上目标上,它是一个阻止项。 - 这个站点是否正在替换现有站点? 如果是,获取旧站点的URL并传递
--old-url参数。此操作必须在两个站点都还可达时进行——通常在DNS迁移之前。这是唯一可以自动构建重定向映射的时刻。 - 是否可能泄露到构建中的任何开发或预发布主机名。 每个主机名都使用
--dev-host参数传递。泄露的主机名是一个阻止项,且审计只能搜索它已知的那些。 - 是否安装了Playwright? 如果安装了,则运行浏览器层级:截图、axe可访问性检查、Lighthouse,以及分析是否实际触发。如果没有安装,请说明——大约三分之一的报告将无法生成,且在报告中会明确指出是哪三分之一。
2. 运行脚本
运行它;切勿阅读其源代码,也切勿重新实现其功能。它所做的所有操作都是只读的:它获取页面,渲染样本页面,并将结果包写入磁盘。
node scripts/launch-audit.mjs --url <url> [--old-url <url>] [--dev-host <host>] [--staging] [--browser auto|on|off] [--out <dir>]
路径是相对于此技能自身目录的——从该目录运行命令,并使用 --out 将结果包写入工作目录所在的位置。
其他标志:--max-pages(默认200)、--max-depth(默认4)、--ignore-robots、--baseline <早期baseline.json的路径>、--json、--config <路径>、--help。
浏览器层级默认为 auto:如果存在Playwright则运行,否则跳过并给出原因。使用 --browser on 将其缺失视为错误,使用 off 则有意跳过。
无论有多少发现,它都返回退出码0——这是报告,而非关卡。退出码2表示用法错误。如果它建议安装Playwright,请转述该建议;未经要求,请勿安装任何内容。
3. 读取结果包
脚本会打印结果包的路径并写入:
report.md按维度分类的发现,然后是与操作和访问相关的就绪情况,最后是“未覆盖”findings.json相同的发现,机器可读格式crawl.json每个访问到的URL、其状态、深度以及发现方式baseline.json一份快照,供上线后做差异比较manifest.json本次运行写入的具体文件列表redirects.csv每个旧URL对应一行(仅在使用 --old-url 时)screenshots/每个渲染页面在桌面端、平板端和移动端的截图(仅限浏览器层级)lighthouse/Lighthouse测量的分数和指标,按页面和外形因素分类(仅限浏览器层级)
首先阅读 report.md:阻止项,然后是 “未覆盖”,最后是其他所有内容。了解哪些内容未被检查会改变您对某个“干净”部分的解读方式。references/reading-the-report.md 包含严重性等级表以及如何处理结果包。
4. 亲自完成三项判断性审查
脚本为三项任何检查工具都无法完成的审查收集证据。在呈现任何内容之前,请完成所有三项审查。每项审查都有一个参考文件;在进行该次审查之前阅读该文件,而不是之后。
截图——请参阅 references/reading-the-report.md。将每个渲染页面的移动端和桌面端截图并排打开,查找布局损坏、水平溢出、缺失图片、裁剪或截断的文本、在手机宽度下未折叠的导航,以及上线后仍然存在的占位图片。如果未运行浏览器,则没有截图,且此项审查未进行——请说明这一点,而不是让其缺失被解读为通过。
表单——请参阅 references/forms.md。使用报告中的证据,将清单中的每个表单归类为第一方、第三方或失效表单。然后告知相关人员哪些表单需要测试提交,以及具体需要确认什么:成功消息、到达受监控 收件箱(而非垃圾邮件文件夹)的通知,以及记录出现在其应到达的目标位置。您永远不应亲自提交表单。
联系方式——请参阅 references/content.md。将报告中找到的每个电话号码、电子邮件地址和邮政地址收集到一个列表中,检查 tel: 链接所拨打的号码是否与其旁边显示的电话号码一致,并询问网站所有者哪些是当前有效的。一个页面上遗留的第二个电话号码会使一半的电话无人接听,而从外部无法判断哪一个是正确的。
5. 呈现报告
按照报告的结构组织您的摘要,并以结论而非计数开始。四十条来自同一个模板的低严重性发现等于一次修复;一个阻止项就等于一次启动。
- 阻止启动的因素。 每个阻止项用一句简明的话说明。如果没有,请直接说明。
- 按维度分组的发现,每个维度内按最严重的严重性排序。 描述其形态,而非仅仅是数字:“十四个页面缺少描述——这是一个模板问题,因此是一次修复”。说出修复方法而非失败原因,并用通俗易懂的语言说明其代价。
- 操作和访问就绪情况。 这些是网站所有者的职责,也是那些会毁掉启动日的东西。逐项大声读出的
[human]项目,并为每一项获得回答。 - “未覆盖”,逐字逐句。 每一行,未经编辑,诚实地介绍:“以下是本审计未检查的内容”。切勿总结、称其为次要或因其列表过长而省略。
永不运行的两项检查
每份报告都以这两个结束,之所以存在它们,是因为它们是最具破坏性且任何爬虫都无法达成的两项失败:
- 文案与源文档对比。 本技能没有任何操作能将网站上的文字与已签核的文案进行比较。必须有人亲自对照两者进行阅读。
- 页面与商定范围对比。 本技能没有任何操作知道哪些页面应该存在。一个从未被构建的页面对于爬虫来说是隐形的。
在呈现报告时,请将这两项大声说出来。一个网站可能通过了本技能中的所有检查,但仍然缺少了商定内容的一半。
参考资料
在解释某个维度的发现之前,请先阅读该维度的文件。每个文件都涵盖了发现的意义、在启动时为何重要、如何在常见技术栈上修复,以及该检查无法告诉您的内容。
| 文件 | 涵盖内容 |
|---|---|
references/reading-the-report.md | 严重性等级、截图检查清单、“未覆盖”、向客户呈现 |
references/indexability.md | 爬取和清单、noindex、robots.txt、站点地图、规范化标签、hreflang |
references/host.md | HTTPS、证书、www与根域名、重定向、安全头部、404页面 |
references/head.md | 标题、描述、标题标签、图标、社交卡片、结构化数据 |
references/links.md | 损坏和无法验证的链接、链接文本、mailto: 和 tel: |
references/images.md | 替代文本、尺寸、加载策略、大小、格式、视频 |
references/forms.md | 清单、端点、分类及测试提交 |
references/accessibility.md | HTML基础、axe违规及十五分钟手动审查 |
references/performance.md | 提示与测量、Lighthouse以及工作排序 |
references/analytics.md | 标签检测、触发、同意及验证审查 |
references/content.md | 占位符、过期日期、联系方式变体 |
references/redirects.md | 过渡映射、redirects.csv以及编写规则 |
references/ops.md | 电子邮件认证、法律页面以及就绪检查清单 |
此技能的位置
pre-launch 是在部署前针对仓库运行的关卡。launch-audit 是当前技能:它仅报告,从不阻止。post-launch 在DNS迁移后立即运行,并将生产环境与本审计编写的基线进行差异比较。请按此顺序运行它们。