跳转至

捕获的网站模块关系

trace_web_module_imports / rea trace-web-module-imports 从导出的捕获中追踪单个脚本向外的原生 ES 导入和再导出。它验证所选源的 SHA-256 和字节数,保留浏览器 URL 标识,并内联返回所有匹配的捕获候选。它不会重新获取网站资源。

选择源代码与上下文

需提供由调用方提供的、支持 import.meta.resolve 的 Chromium 可执行文件。REA 不会安装或升级浏览器。真实验证仅涵盖 Linux x64;其他主机尚未获得此功能的真实工作流验证。

REA_BROWSER_EXECUTABLE=/absolute/path/to/chrome \
  rea trace-web-module-imports /analysis/export/manifest.json 0 \
  --importer-url 'https://example.test/app/main.js?build=2#entry' \
  --import-map-path /analysis/import-map.json \
  --import-map-base-url https://example.test/maps/ \
  --json

MCP 输入表示相同的选择:

{
  "manifest_path": "/analysis/export/manifest.json",
  "script_index": 0,
  "importer_url": "https://example.test/app/main.js?build=2#entry",
  "import_map": {
    "path": "/analysis/import-map.json",
    "base_url": "https://example.test/maps/"
  }
}

script_index 在 manifest.scripts 中从零开始计数。如果省略 importer_url,追踪将选择已报告的源 URL。内联脚本的文档基址无法仅凭该 URL 确定;如果已知上下文,请显式选择。import_map 是可选的,且仅读取本地 JSON。其精确字节和基础 URL 会被保留;选择它并不证明该映射已安装在捕获的页面中。最初支持不带 URL 用户信息的 HTTP(S) 导入方上下文。不可用的已报告 URL 会使导入方上下文不可用;当已知其值时,请显式提供 importer_url。显式提供的畸形 URL 将针对该输入字段报告。使用不受支持方案的 URL 仍属于能力限制。

解读证据

  • 静态导入、再导出和字面量动态导入会接收到原生引擎解析后的 URL 或确切的拒绝消息。空字符串会被保留。
  • 计算型动态导入保留其表达式和源码位置,并以 computed-specifier 未知解析结果呈现。被擦除的仅类型导入/导出以及推断出的打包器 ID 不会计入原生导入声明。
  • 位置使用 UTF-16 偏移量和列,行号从 1 开始。解析恢复诊断和无法解析的输入都会被明确报告。
  • 查询变体和片段保持彼此区分。精确的已报告 URL 是 exact-reported-url 候选项。去除了片段的响应 URL 是较弱的 response-url-without-fragment 内容候选项。所有捕获的版本都会返回;追踪不会选择任何一个作为规范版本。
  • 候选元数据仍属于所报告的捕获证据;只有所选源的字节会被重新验证。缺失/惰性目标可以在没有捕获候选的情况下成功解析。每个关系都将执行状态报告为未知。
  • 源代码映射声明仍然是声明;此操作不会读取或虚构映射字节、原始源映射、worker 所有权或 UI 因果关系。

所选源从清单当前目录下的 files/ 目录加载。重定位操作会分别保留清单最初报告的路径和实际当前源路径。不安全的路径、符号链接源目录、非普通文件、错误的摘要/大小以及格式错误的 UTF-8 都会明确失败。清单声明的格式错误源字节或不安全源路径属于产物失败。调用方选择的清单或导入映射文件格式错误时,会指出所提供输入字段。

引擎与生命周期

一个由 REA 持有的临时浏览器上下文运行 REA 的可信解析器存根。所选应用作为数据处理,绝不会由本次追踪执行。页面请求会由 REA 的合成文档/存根满足或被阻止;不会下载任何网站资源。这并不建立操作系统沙箱或浏览器级网络隔离。引擎版本和原生报告会保留在 Evidence 中。

没有字面量导入的源不会获取浏览器。清单、源和导入映射的输入限制分别为 32 MiB、16 MiB 和 4 MiB。原生解析有一个 20 秒截止时间;清理可能会延长该截止时间。会请求一个渲染进程,且不会声称有主机内存总量限制。取消操作只会关闭所持有的浏览器;清理失败不会返回成功的追踪结果。REA_BROWSER_NO_SANDBOX=true 会在主机需要时传递 Chromium 对应的启动选项;它不会启用 REA 安全边界。

有关原生加载预言机以及 CLI/MCP 真实通道,请参阅 测试。

所选本地源文件名提供解析器语法。JavaScript 文件即使在关系表达式中也保留原生动态导入;TypeScript 文件使用共享的 TypeScript 语法,并在运行时模块追踪中省略被擦除的导入类型表达式。历史源导入会单独保留这些类型依赖。解析器观察结果和原生 URL 解析并不证明执行发生。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea