Repository navigation
OpenBrowser v1.0.18
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.requestFullscreenandElement.prototype.webkitRequestFullscreenwere installed as the same function object, while a genuine build keeps them distinct and names the legacy onewebkitRequestFullscreen. Under injectionrequestFullscreen === webkitRequestFullscreenreturnedtrueand the legacy entry point carried the standard name - a single equality test or.nameread exposed the rewrite. Each entry point now receives its own replacement with matchingname,lengthandprototype. - New standing regression: static-surface diff. The new
selftest:surfacediffwalks 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 matchingname/length/prototypemetadata. 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.toStringon 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= 安装包内置独立浏览器内核,运行时无需再下载内核。