版本说明
修复 Camoufox 隔离执行上下文无法读取页面脚本全局的问题,并补齐主世界 Hook、Frame 选择和持久 Trace 读取能力;既有默认行为保持不变。
主要变更
evaluate_js与hook_function新增显式world="main";优先使用 Camoufox 原生mw:通道,旧版或外部服务可安全回退到 FirefoxwrappedJSObject。- 增加
frame_url/frame_name/frame_index,get_page_info返回当前 Frame 清单;多匹配和失效索引明确报错。 - 持久 Hook 支持动态全局的有界等待与赋值监听,可捕获“函数挂载后立即调用”的首次执行;目标未出现时返回
pending,不再假报成功。 - 恢复
get_trace_data,Trace 按 world/Frame 隔离并使用有界缓存;同时修复 intercept 模式忽略persistent的问题。
兼容性
world="isolated"仍为默认值,现有evaluate_js/hook_function调用和返回字段继续兼容。- 支持 Camoufox 0.4.x/Firefox 135、官方 152 与 reverse.5;本次只修改 MCP,无需重新编译浏览器。
- 持久 Hook 的
frame_index不稳定,已明确拒绝;跨导航请使用frame_url或frame_name。
验证
- 完整测试
174 passed, 1 skipped,新增 27 项主世界、Frame、late-binding、严格序列化和 Trace 缓存回归。 - Firefox 135、官方 Camoufox 152 与 reverse.5 均完成真实主世界读取和首次调用 Hook 验证。
- 真实 FeiLin 页面中成功读取
initAliyunCaptcha/FEILIN/um,并捕获FEILIN.initFeiLin首次调用及 Frame 元数据。
致谢
- 感谢 @Moojing-jianchuan 在 Issue #15 提供真实站点、脚本和调用链。
完整变更:v1.4.1...v1.5.0