内置 H.264
从源码编译 Qt + QtWebEngine,并启用 proprietary codecs,让 Python 浏览器拥有可用的视频播放能力。
PureBrowser
Privacy-first Python Browser
基于 PyQt6 + 自行编译的 QtWebEngine 6.7.3。内置 H.264、隐私优先、无遥测, UI、隐私策略与拦截规则全部由 Python 驱动。
Fast by Chromium · Custom by Python · Private by default
PureBrowser 试图解决一个很具体、也很现实的问题: 官方 Qt pip wheel 不带 H.264,导致部分视频网站无法正常播放 HTML5 视频。
自适应标签条、拖拽排序、独立关闭、最近关闭标签恢复,以及后退 / 前进 / 刷新。
Ctrl+F 查找栏、匹配数量、上下切换;支持 Ctrl + 滚轮 和快捷键缩放,并按站点记忆。
SQLite 持久化历史记录,地址栏自动补全,今天 / 昨天 / 更早分组下拉,支持书签切换。
暂停、继续、取消、重试;显示实时速度、进度与大小,支持打开文件及在文件夹中显示。
自绘无边框标题栏,记住窗口状态;浅色、深色、跟随系统主题统一作用于工具栏、菜单与内置页面。
约 22 个主机拦截规则、HTTPS 升级、跨站 Cookie 处理、DoH、默认拒绝权限;无遥测 / 崩溃上传 / RLZ / 设备 ID。
浏览器使用截图。
当前构建与验证目标为 Windows x64。
| 组件 | 版本 | 来源 |
|---|---|---|
| 操作系统 | Windows 10/11 x64 | — |
| Python | 3.10.11 | python.org |
| PyQt6 | 6.7.1 | 自行编译 wheel |
| PyQt6_sip | 13.8.0 | PyPI |
| PyQt6-WebEngine | 6.7.0 | 自行编译 wheel |
| Qt / QtWebEngine | 6.7.3 + H.264 | 自行编译 |
环境变量:QT_PLUGIN_PATH 与 PATH 必须指向自定义 Qt 安装目录。纯 Python 依赖包括 httpx、platformdirs。
git clone https://github.com/ElovisiaWinslow/purebrowser.git
cd purebrowser
python -m venv .venv
.venv\Scripts\activate
pip install -e .
python -m purebrowser
pip install -e . 只安装 httpx 与 platformdirs,不会触碰 Qt。随后按照 docs/DEVELOPMENT.md 配置自编译 wheel、Qt runtime、PATH 与 QT_PLUGIN_PATH,并验证 H.264。
按照 docs/DEVELOPMENT.md 快速搭建构建环境。
按照 docs/BUILD_NOTES.md 从头构建;预计需要 2–5 天。
PyInstaller 负责应用打包,Inno Setup 负责安装程序封装。
打包自定义 Qt6 DLL、插件、资源和 QtWebEngineProcess.exe。
设置 Qt 插件、WebEngine process、resources、locales 等运行时路径。
一键执行 PyInstaller → Inno Setup。
输出 installer\Output\PureBrowserSetup.exe。
构建脚本包含本机硬编码绝对路径,例如 D:\PythonProject\purebrowser、D:\develop\Qt6-custom 以及 Inno Setup 安装路径。迁移到另一台机器前请先编辑这些路径。
核心代码保持在 Python 层,Qt 只负责浏览器引擎与运行时。
purebrowser/
├─ src/purebrowser/
│ ├─ __main__.py / main.py / app.py
│ ├─ core/
│ │ ├─ profile.py
│ │ ├─ interceptor.py
│ │ ├─ privacy/flags.py
│ │ ├─ settings.py
│ │ └─ locations.py
│ ├─ data/
│ │ ├─ storage.py / history.py / bookmarks.py
│ │ ├─ favicons.py / downloads_store.py / session.py
│ ├─ pages/
│ │ ├─ pages.py / newtab.py / downloads.py
│ └─ ui/
│ ├─ window.py / tab.py / tab_area.py / tabbar.py
│ ├─ urlbar.py / theme.py / icons.py / hud.py
│ ├─ menu_rows.py / context_menu.py / dropdown.py
│ ├─ session_prompt.py / freeze_overlay.py
├─ resources/
├─ tools/
├─ docs/
├─ PureBrowser.spec / runtime_hook.py / rebuild.bat / PureBrowser.iss
├─ pyproject.toml / requirements.txt
└─ LICENSE / README.md / README.zh-CN.md / AGENTS.md
| PureBrowser | ungoogled-chromium | qutebrowser | LibreWolf | |
|---|---|---|---|---|
| 语言 | Python | C++ | Python | C++ |
| 内置 H.264 | 是 | 需自行处理 | 否 | 是 |
| 自行编译引擎 | 是 | 是 | 否 | 是 |
| 无遥测 | 是 | 是 | 是 | 是 |
| “改完即跑” | 编辑 .py | 重新编译 | 编辑 .py | 编辑 C++ |
| 目标 | 学习 / 定制 / 研究 | 硬核用户 | 键盘用户 | 隐私用户 |
官方 pip Qt wheel 编译时没有 H.264。PureBrowser 使用自行编译版本获得 H.264;两者可以共存,但不要在同一 venv 中混用。
当前只验证 Windows x64。构建脚本、补丁和依赖 DLL 都是 Windows 专用的,Linux / macOS 需要按 BUILD_NOTES.md 重新走构建流程。
不能作为本项目当前配置的直接替代。官方 PySide6 wheel 同样缺少 H.264,且 QtWebEngine 版本与项目固定的 PyQt6 6.7.1 + Qt 6.7.3 不一致。
运行时体积较大,作为 Releases 资产发布,例如 Qt6-runtime-win64.zip。
ungoogled-chromium 本身是 C++ 工程;PureBrowser 把可改造层放在 Python,修改 UI、策略或业务逻辑时通常只需修改 .py 文件。
当前可用的流水线是 PyInstaller + Inno Setup,由 PureBrowser.spec、runtime_hook.py、rebuild.bat 驱动;旧文档中的 Nuitka 说明已经过时。
这是有意保持无依赖、轻量的主机屏蔽列表。路线图中计划支持更完整的规则集。
提交 issue、代码 PR、构建笔记中的新坑,或者参与文档翻译。
评论(0)
暂无评论