Skip to content

OpenBrowser v1.0.18

Choose a tag to compare

@github-actions github-actions released this 12 Sep 09:37

OpenBrowser v1.0.18

中文

  • 全屏入口对象别名(真实缺陷):Element.prototype.requestFullscreen 与 Element.prototype.webkitRequestFullscreen 此前被装成同一个函数对象,而真实构建里它们是两个不同对象,且后者自带名字 webkitRequestFullscreen。注入后 requestFullscreen === webkitRequestFullscreen 返回 true、legacy 入口的 name 变成 requestFullscreen —— 一行相等判断或一次 .name 读取就能判定环境被改写。现已改为各自独立的替换函数,name / length / prototype 与真实构建逐项一致。
  • 新增常驻回归:静态表面差分。新增 selftest:surfacediff,遍历页面可达的全部原型(本次 951 个原型、约 9.9k 个表面项),与同一二进制未注入基线逐项对照,锁定四件事:不新增属性、不丢失属性、不新增函数对象别名、name/length/prototype 元数据一致。该用例已用变异验证:把旧的共享对象写法还原回去,三项断言立刻失败且退出码为 1。
  • CI 侧同步加护栏:隔离回归中新增静态断言,禁止再把同一个替换函数挂到两个入口上。
  • 顺带确认(无差异):注入层不泄漏源码 —— 对 Navigator / Screen / Canvas / WebGL / MediaDevices / SpeechSynthesis / Date / Performance / AudioContext / RTCPeerConnection / Element / Document 等原型上的 1,164 个函数逐一执行 Function.prototype.toString,全部返回 [native code]。
  • 版本全链路同步:package.json、package-lock.json、界面显示、Windows 文件版本信息、README 徽章与 GitHub Actions 发布参数统一为 v1.0.18。

English

  • Fullscreen entry-point aliasing (real defect): Element.prototype.requestFullscreen and Element.prototype.webkitRequestFullscreen were installed as the same function object, while a genuine build keeps them distinct and names the legacy one webkitRequestFullscreen. Under injection requestFullscreen === webkitRequestFullscreen returned true and the legacy entry point carried the standard name - a single equality test or .name read exposed the rewrite. Each entry point now receives its own replacement with matching name, length and prototype.
  • New standing regression: static-surface diff. The new selftest:surfacediff walks every prototype reachable from the page (951 prototypes, ~9.9k surface entries in this run) and compares it against the same binary without the injected layer, pinning four properties: no added property, no removed property, no new function-object alias, and matching name/length/prototype metadata. The case was mutation-tested: restoring the shared-object version fails three assertions and exits non-zero.
  • CI guard: the isolation suite now fails statically if one replacement is again mounted on two entry points.
  • Also confirmed clean: the injected layer leaks no source - Function.prototype.toString on 1,164 functions across the Navigator, Screen, Canvas, WebGL, MediaDevices, SpeechSynthesis, Date, Performance, AudioContext, RTCPeerConnection, Element and Document prototypes returns [native code] for every one.
  • Version synchronization: package.json, package-lock.json, the in-app label, Windows metadata, README badges, and the GitHub Actions release input are all aligned to v1.0.18.

下载 / Downloads

标签 / Tag 文件 / File
Windows x86_64 · 内置内核 OpenBrowser-Windows-x86_64-with-kernel.exe
Windows x86_64 · 便携包 OpenBrowser-Windows-x86_64-with-kernel.zip
macOS x86_64 · 内置内核 OpenBrowser-macOS-x86_64.dmg
macOS arm64 · 内置内核 OpenBrowser-macOS-arm64-with-kernel.dmg
Ubuntu x86_64 · 内置内核 OpenBrowser-Linux-x86_64-with-kernel.tar.gz

标签说明:with-kernel = 安装包内置独立浏览器内核,运行时无需再下载内核。