浏览器 / 进阶 / 阅读约 15 分钟
REA 浏览器分析:点击导出后发生了什么?
使用 REA 分析浏览器导出操作,将请求与已加载代码关联,并判断页面何时无需服务器就能生成下载文件。
本页内容
一条简短时间线,将导出操作与观察到的请求或客户端生成下载的路径联系起来。
你需要使用隔离调试配置的 Chromium 浏览器、你控制的页面,以及 REA。示例启动命令适用于 macOS Chrome。
01. 启动隔离的浏览器会话
使用独立调试配置打开本地应用,明确所选页面和测试数据。将最后的 URL 替换为你自己的本地应用。Windows 或 Linux 请使用对应的 Chrome 可执行文件。
调试端点是浏览器控制连接,与应用 URL 不同。使用明确的回环地址,以及 REA 返回的目标 ID。
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/rea-export-profile \
http://127.0.0.1:300002. 选中准确页面
列出目标,找到应用 URL 并复制目标 ID。实验前先分析该页面。如果标签页重新加载或被替换,请重新列出目标,不要复用旧 ID。
npx -y [email protected] list-browser-targets http://127.0.0.1:9222 --json
npx -y [email protected] inspect-web-page http://127.0.0.1:9222 TARGET_ID --observation-ms 1000 --json03. 先记录基线,再导出一次
先记录一小段空闲时间,让后台轮询显现。再开始第二次观察,在观察窗口内亲自点击导出。REA 的被动观察器不会替你点击按钮。
输入应简短且易辨认,例如包含唯一测试标签的两行数据。记录应用是否显示加载动画、下载文件或报错。对比两次记录,不要假设每个新增请求都属于导出操作。
npx -y [email protected] observe-web-session http://127.0.0.1:9222 TARGET_ID --observation-ms 10000 --json > export-capture.json- 操作之后是否发起了请求?
- 它的方法、URL 和报告的状态是什么?
- 能否通过发起方或已加载脚本,将它与按钮关联?
- 下载文件是否实际生成,是否包含测试数据行?
04. 没有请求?检查客户端路径
有些导出会在 JavaScript 中构建 Blob,直接下载而不请求服务器。因此,空请求列表是一条有用线索,并不代表捕获失败。查看已加载脚本,在相关功能中搜索 Blob、createObjectURL 和 download 属性。
打包代码分析报告的是静态候选项。看起来像端点的字符串,并不能证明它被调用过。将请求观察结果与源码发现分列记录。
npx -y [email protected] analyze-web-bundle http://127.0.0.1:9222 TARGET_ID --json根据所选页面和这次导出记录,解释导出操作是请求服务器生成文件,还是在浏览器中构建文件。把观察到的活动与相关已加载代码关联,指出缺失的证据。不要仅凭元数据推断响应内容。05. 用棘手输入再试一次
导出包含逗号、引号和换行符的一行数据。使用对应格式的解析器打开结果,而不只是文本编辑器。下载成功不代表文件编码正确。
交付操作时间线、选定请求或客户端函数,以及文件验证结果。这是用于你自己的目标的可复现流程;本文不包含对第三方服务实际捕获的会话。
命令已对照 REA 6.4.0 核对。具体结果取决于分析对象和后端。 查看上游来源与范围 →