boxmoe_header_banner_img

Hello! 欢迎来到Bin's Home!

加载中

文章导读

我用纯 Python 造了一个能看 Bilibili 的浏览器


avatar
Bin 2026年10月3日 190

PureBrowser logo PureBrowser Privacy-first Python Browser
PUREBROWSER / WINDOWS X64 / ALPHA

一个真正可以
改造的 Python 浏览器。

基于 PyQt6 + 自行编译的 QtWebEngine 6.7.3。内置 H.264、隐私优先、无遥测, UI、隐私策略与拦截规则全部由 Python 驱动。

H.264 视频播放
100% Python UI / 策略可改
0 Telemetry 无遥测上传
purebrowser://newtab
PUREBROWSER

浏览器,也可以很纯粹。

Fast by Chromium · Custom by Python · Private by default

01 / OVERVIEW

这是什么

PureBrowser 试图解决一个很具体、也很现实的问题: 官方 Qt pip wheel 不带 H.264,导致部分视频网站无法正常播放 HTML5 视频。

02

纯 Python 可改造

UI、隐私策略与请求拦截器都位于 src/purebrowser/。改一个 .py 文件即可迭代。

查看结构 →
03

隐私优先且可审计

默认拒绝站点权限、HTTP → HTTPS、DoH、广告/追踪器主机屏蔽、仅本地 SQLite 数据存储。

查看隐私策略 →
02 / FEATURES

功能,一眼看懂

Desktop browser · Python-driven
01

浏览与标签页

自适应标签条、拖拽排序、独立关闭、最近关闭标签恢复,以及后退 / 前进 / 刷新。

CtrlShiftT
02

查找与缩放

Ctrl+F 查找栏、匹配数量、上下切换;支持 Ctrl + 滚轮 和快捷键缩放,并按站点记忆。

CtrlF
03

书签 / 历史

SQLite 持久化历史记录,地址栏自动补全,今天 / 昨天 / 更早分组下拉,支持书签切换。

CtrlD
04

下载管理

暂停、继续、取消、重试;显示实时速度、进度与大小,支持打开文件及在文件夹中显示。

SQLite · 200 records
05

窗口与外观

自绘无边框标题栏,记住窗口状态;浅色、深色、跟随系统主题统一作用于工具栏、菜单与内置页面。

LightDarkSystem
06

隐私策略

约 22 个主机拦截规则、HTTPS 升级、跨站 Cookie 处理、DoH、默认拒绝权限;无遥测 / 崩溃上传 / RLZ / 设备 ID。

DoHHTTPSNo telemetry
03 / SCREENSHOTS

真实界面

浏览器使用截图。

04 / REQUIREMENTS

系统要求

当前构建与验证目标为 Windows x64。

组件版本来源
操作系统Windows 10/11 x64—
Python3.10.11python.org
PyQt66.7.1自行编译 wheel
PyQt6_sip13.8.0PyPI
PyQt6-WebEngine6.7.0自行编译 wheel
Qt / QtWebEngine6.7.3 + H.264自行编译
ENV

环境变量:QT_PLUGIN_PATH 与 PATH 必须指向自定义 Qt 安装目录。纯 Python 依赖包括 httpx、platformdirs。

05 / QUICK START

快速开始

01

从 Releases 下载安装程序

下载 PureBrowserSetup.exe,运行后从开始菜单启动 PureBrowser。

打开 Releases ↗
git clone https://github.com/ElovisiaWinslow/purebrowser.git
cd purebrowser

python -m venv .venv
.venv\Scripts\activate
pip install -e .

python -m purebrowser
02

安装自定义 PyQt6 + Qt6 runtime

pip install -e . 只安装 httpx 与 platformdirs,不会触碰 Qt。随后按照 docs/DEVELOPMENT.md 配置自编译 wheel、Qt runtime、PATH 与 QT_PLUGIN_PATH,并验证 H.264。

推荐:使用预编译依赖

按照 docs/DEVELOPMENT.md 快速搭建构建环境。

完整重编译 QtWebEngine

按照 docs/BUILD_NOTES.md 从头构建;预计需要 2–5 天。

06 / PACKAGING

Windows 打包

PyInstaller 负责应用打包,Inno Setup 负责安装程序封装。

.specPureBrowser.spec

打包自定义 Qt6 DLL、插件、资源和 QtWebEngineProcess.exe。

.pyruntime_hook.py

设置 Qt 插件、WebEngine process、resources、locales 等运行时路径。

.batrebuild.bat

一键执行 PyInstaller → Inno Setup。

.issPureBrowser.iss

输出 installer\Output\PureBrowserSetup.exe。

可移植性警告

构建脚本包含本机硬编码绝对路径,例如 D:\PythonProject\purebrowser、D:\develop\Qt6-custom 以及 Inno Setup 安装路径。迁移到另一台机器前请先编辑这些路径。

07 / STRUCTURE

项目结构

核心代码保持在 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
08 / COMPARISON

与主流浏览器对比

PureBrowserungoogled-chromiumqutebrowserLibreWolf
语言PythonC++PythonC++
内置 H.264是需自行处理否是
自行编译引擎是是否是
无遥测是是是是
“改完即跑”编辑 .py重新编译编辑 .py编辑 C++
目标学习 / 定制 / 研究硬核用户键盘用户隐私用户
09 / ROADMAP

路线图

已完成
从源码编译 QtWebEngine 6.7.3 + H.264
基础 UI + 拦截器 + 隐私默认值
历史、书签、下载、设置页面
查找栏、页面缩放、favicon
自定义中文菜单 + 可滚动下拉面板
会话恢复提示 + 窗口状态记忆
Windows 打包(PyInstaller + Inno Setup)
计划中
自动更新(自托管、签名)
Linux / macOS
扩展(可选)
端到端加密同步(可选,默认关闭)
完整 EasyList、书签管理器、隐私窗口、按站点权限
10 / LIMITATIONS

已知限制

Windows x64 only目前只验证 Windows x64。
小型主机屏蔽列表约 22 个域名,不是 EasyList / EasyPrivacy。
权限全部拒绝暂不支持按站点授予权限。
没有扩展 / 同步 / 账户也没有多配置文件与隐私窗口。
下载续传有限重启后进行中的下载会标记为中断,需要重试。
会话恢复有限仅恢复 URL,不恢复完整表单 / 滚动状态。
11 / FAQ

常见问题

为什么使用自行编译的 PyQt6,而不是 pip 版本?

官方 pip Qt wheel 编译时没有 H.264。PureBrowser 使用自行编译版本获得 H.264;两者可以共存,但不要在同一 venv 中混用。

为什么只有 Windows?

当前只验证 Windows x64。构建脚本、补丁和依赖 DLL 都是 Windows 专用的,Linux / macOS 需要按 BUILD_NOTES.md 重新走构建流程。

可以使用 PySide6 吗?

不能作为本项目当前配置的直接替代。官方 PySide6 wheel 同样缺少 H.264,且 QtWebEngine 版本与项目固定的 PyQt6 6.7.1 + Qt 6.7.3 不一致。

为什么仓库里没有 Qt6 运行时?

运行时体积较大,作为 Releases 资产发布,例如 Qt6-runtime-win64.zip。

这与 ungoogled-chromium 有何不同?

ungoogled-chromium 本身是 C++ 工程;PureBrowser 把可改造层放在 Python,修改 UI、策略或业务逻辑时通常只需修改 .py 文件。

为什么使用 PyInstaller 而不是 Nuitka?

当前可用的流水线是 PyInstaller + Inno Setup,由 PureBrowser.spec、runtime_hook.py、rebuild.bat 驱动;旧文档中的 Nuitka 说明已经过时。

为什么广告拦截器这么小?

这是有意保持无依赖、轻量的主机屏蔽列表。路线图中计划支持更完整的规则集。

12 / CONTRIBUTE

一起把它做得更好

提交 issue、代码 PR、构建笔记中的新坑,或者参与文档翻译。



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码