跳转到内容

为真机实验室读数配置 Web Inspector

发布于

仪器读数是代理读取后原样存入数据包 raw/ 目录的数据,置信度标签为 A(报告第 5.2、5.4 节)。2026-10-20 的测试里,读数走的是 Web Inspector 协议,部分标签页数值则用 WebDriver(safaridriver)读取。使用 Web Inspector 时,用数据线把设备连到 Mac,分别读取 Safari 标签页和主屏应用。Apple 的官方说明是 Inspecting iOS and iPadOS(developer.apple.com),各个面板的介绍见 Web Inspector(webkit.org)。

  1. 在 iPhone 上打开「设置 > App > Safari > 高级」,打开网页检查器(Web Inspector)。
  2. 在 Mac 上打开「Safari > 设置 > 高级」,勾选显示网页开发者功能,菜单栏会出现开发菜单(Enabling Developer Features,developer.apple.com)。
  3. 用线连接 iPhone,解锁,如有提示就点信任。
  4. 在 Mac 的 Safari 中打开开发 > 你的 iPhone 名称。这里会列出打开着的 Safari 标签页和正在运行的主屏 Web 应用,Service Worker 有时会单独列出。选中一项即可打开它的控制台。

需要的页面不在列表里时,把这一步记为 could-not-run (not inspectable),然后继续。Mac 的 macOS 和 Safari 版本写进环境信息。

读数时,在页面控制台运行探测脚本,保存它的输出。可以用实验室随数据一起公开的探测脚本,位于 iOS 18.6.2 数据包的 tools/ 目录,也可以直接读测试页自带的面板。粘贴脚本、运行,把控制台输出存成文件,文件名包含步骤、环境和页面,例如 <date>-<os>-<step>-app-lab.json。每次读数的时间用 UTC 记录。

在 Safari 里打开测试页,再到开发 > 你的 iPhone 名称下选中它,标签页列在 Safari 名下。标签页一侧的结果标为 tab。

从图标启动应用,让它留在前台。主屏 Web 应用运行在自己的进程里,所以在列表中单独成一项,不归在 Safari 下。页面只有在前台时才能读取;手机锁屏或应用退到后台的话,先切回来再读。应用一侧的结果标为 app。

探测脚本只读不写。它们读取特性检测、matchMedia 查询、几何尺寸和存储内容,不调用 requestPermission()、subscribe()、share()、install()、register() 或 persist()。所以权限和订阅的变化都来自操作员对测试页按钮的点击,记录里能看出是哪一步引起的。测试页加载时仍会自己做一些事,比如注册 Service Worker。读数仍然会在页面里执行 JavaScript(为了读 env() 安全区会插入一个隐藏元素,还会临时挂一个属性),方法页把这一点列为效度威胁。

脚本化读数时,实验室用 ios_webkit_debug_proxy(github.com)走 WebKit 远程检查器协议,用 safaridriver 做标签页的自动读数。safaridriver 会话打开的自动化窗口有自己独立的网站数据,初始为空,因此不能用它获取存储测试结果。做脚本化读数之前,先关掉 Mac 上连着这台手机的 Web Inspector 窗口。

推送订阅只读主机名,探测脚本只打印 web.push.apple.com,路径和密钥都丢弃。保存可检查页面列表之前,把其他网站的 URL 涂掉;设备 UDID、序列号和账户名不要出现在保存的文件和脚本里。照 iPhone 与 iPad 指南填好环境信息,测试前后各把下发的文件和 /lab/harness/v1/SHA256SUMS.txt 比对一次。测试要求时先恢复干净状态(删图标、清网站数据)。

设备操作由 OpenPWA 的一名操作员在 iPhone 16 Pro 上完成。AI 代理会话通过 USB 读取页面状态、记录实验笔记并起草本文;自动门禁和 AI 事实核查做了检查。没有人逐篇审阅。