基于 PyQt5 + QtWebEngine(Chromium 内核) 打造的轻量级自定义指纹浏览器。 集成 browserforge 实现真实浏览器指纹模拟, 支持多标签页、SOCKS5 / 系统代理、开发者工具、源码高亮查看、一键清理浏览数据等能力。
| 特性 | 说明 |
|---|---|
| 🧬 指纹伪装 | 基于 browserforge 自动生成真实 User-Agent、请求头字段与头顺序,降低被网站指纹追踪的风险 |
| 🗂️ 多标签页 | 支持多标签并行浏览,可自由新建 / 关闭 / 切换 |
| 🌐 代理支持 | 支持手动配置 SOCKS5 代理,并可自动读取 Windows 系统代理 |
| 📥 下载管理 | 内置下载管理器,带实时进度浮窗与完成提示 |
| 🔍 源码查看 | 一键查看页面源代码,带 HTML / CSS 语法高亮 与流式增量加载 |
| 🛠️ 开发者工具 | 内置 DevTools(F12),基于 QtWebEngine 调试协议 |
| 🕵️ 自定义 UA | 可随时手动设置 / 修改 User-Agent |
| 🧹 一键清数据 | 一键清除 Cookie、HTTP 缓存、localStorage、sessionStorage、IndexedDB 并刷新所有标签页 |
| 📝 完整日志 | 全程记录运行日志到 browser.log,便于排查问题 |
- Python 3.10+
- PyQt5 / PyQtWebEngine —— Chromium 内核渲染与桌面 UI
- browserforge —— 浏览器指纹(请求头 / 头顺序)生成
- requests / urllib —— 代理探测与网络请求
- beautifulsoup4 —— 页面源码格式化
- orjson(可选) —— 高性能 JSON 解析,缺失时自动回退到标准库
- 操作系统:主要面向 Windows(代码通过
winreg读取系统代理,依赖 Windows 注册表)。 - Python:3.10 及以上版本。
- 依赖:见
requirements.txt。
⚠️ 由于使用了 Windows 注册表读取系统代理,当前实现未对 macOS / Linux 做适配。如需跨平台,需替换configure_system_proxy()的实现。
# 1. 克隆仓库
git clone git@github.com:xxx-888/pp_browser.git
cd pp_browser
# 2. 安装依赖
pip install -r requirements.txt
# 3. 运行
python pp_browser.py启动后默认打开 https://google.com,指纹数据会自动从 browserforge 包内缓存到 data/ 目录。
| 快捷键 | 功能 |
|---|---|
Ctrl + T |
新建标签页 |
F5 |
刷新当前页 |
F12 |
打开开发者工具 |
Ctrl + U |
查看页面源代码 |
Ctrl + Q |
退出 |
- 文件 → 新建标签页 / 退出
- 视图 → 开发者工具 / 查看页面源代码
- 设置 →
设置 User-Agent:手动覆盖当前 UA设置 SOCKS5 代理:填入 IP 与端口启用 SOCKS5 代理清除浏览器数据:清空 Cookie / 缓存 / 本地存储并刷新
在页面上右键可快速访问 查看网页源代码 / 打开开发者工具 / 保存网页。
浏览器指纹是网站通过请求头、User-Agent、屏幕、字体、Canvas 等信息组合识别用户的手段。本项目的核心思路:
- 使用 browserforge 的
HeaderGenerator生成与真实浏览器高度一致的 HTTP 请求头(包括头字段顺序)。 - 在启动时通过
update_request_headers()将生成的User-Agent与Accept-Language写入QWebEngineProfile,使所有请求自带真实指纹。 - 指纹数据文件(
headers-order.json、*-network.zip等)缓存于data/browserforge/headers/data/,缺失时自动从已安装的browserforge包内复制,保证离线可用。
说明:本项目主要负责 HTTP 层指纹(请求头 / UA) 的伪装。如需完整的软硬件指纹对抗(Canvas / WebGL / 字体 / 时区等),需进一步结合 QtWebEngine 的
QWebEngineProfile与注入脚本扩展。
项目使用 Nuitka 将 Python 源码编译为独立的 Windows 可执行文件,命令已封装在 build.bat 中:
build.batbuild.bat 关键配置:
--standalone:生成不依赖 Python 运行时的独立目录--enable-plugin=pyqt5:正确处理 PyQt5 资源--include-data-dir=...:将data/指纹库与 PyQt5 的plugins / bin / resources一并打入包内--windows-disable-console:隐藏控制台窗口- 输出目录:
dist/(已在.gitignore中忽略,不入库)
执行前请确保已安装
nuitka与 Visual Studio 构建工具(MSVC)。
pp_browser/
├── pp_browser.py # 入口:日志初始化 + 启动主窗口
├── app/ # 应用包(按职责拆分,便于维护)
│ ├── __init__.py # 包说明
│ ├── constants.py # 共享常量与路径工具(标题 / 默认 UA / 缓存路径)
│ ├── fingerprint.py # browserforge 指纹伪装 & Windows 系统代理探测
│ ├── browser_tab.py # 单标签页(WebEnginePage + BrowserTab)
│ ├── download_manager.py# 下载管理与进度浮窗
│ ├── source_viewer.py # 页面源码格式化 / 语法高亮 / 源码窗口
│ └── main_window.py # 主窗口 UI 与启动入口(SimpleBrowser + main)
├── build.bat # Nuitka 打包脚本(Windows)
├── requirements.txt # Python 依赖清单
├── data/ # 指纹数据缓存(browserforge 头顺序 / 网络模型)
│ └── browserforge/headers/data/
├── dist/ # Nuitka 构建产物(已忽略,不入库)
├── .gitignore
└── README.md
本项目仅供 学习研究、隐私保护与自动化测试 之用途。
- 请勿将其用于绕过正常安全机制、欺诈、刷量或其他违反法律法规与平台服务条款的行为。
- 使用本项目所产生的任何后果均由使用者自行承担,作者与贡献者不承担任何责任。
本项目目前 未指定开源许可证。如需用于分发或二次开发,请自行添加合适的 LICENSE 文件后再使用。