Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PP 浏览器 · 自定义指纹浏览器

基于 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 等信息组合识别用户的手段。本项目的核心思路:

  1. 使用 browserforgeHeaderGenerator 生成与真实浏览器高度一致的 HTTP 请求头(包括头字段顺序)。
  2. 在启动时通过 update_request_headers() 将生成的 User-AgentAccept-Language 写入 QWebEngineProfile,使所有请求自带真实指纹。
  3. 指纹数据文件(headers-order.json*-network.zip 等)缓存于 data/browserforge/headers/data/,缺失时自动从已安装的 browserforge 包内复制,保证离线可用。

说明:本项目主要负责 HTTP 层指纹(请求头 / UA) 的伪装。如需完整的软硬件指纹对抗(Canvas / WebGL / 字体 / 时区等),需进一步结合 QtWebEngine 的 QWebEngineProfile 与注入脚本扩展。


📦 构建打包(Windows)

项目使用 Nuitka 将 Python 源码编译为独立的 Windows 可执行文件,命令已封装在 build.bat 中:

build.bat

build.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 文件后再使用。

About

使用python封装的指纹浏览器

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages