一款功能强大的浏览器代理管理扩展,适配 Chrome/Firefox/Edge 等多款浏览器,支持多场景管理,帮助您轻松配置和切换网络代理。
- HTTP - 传统 HTTP 代理
- HTTPS - 安全 HTTPS 代理
- SOCKS5 - 支持 TCP/UDP 的 SOCKS5 代理
- SOCKS4 - 兼容旧版 SOCKS4 代理
- Chrome - 使用 Manifest V3 + Service Worker
- Firefox - 使用 Manifest V3 +
proxy.onRequestAPI 进行代理请求拦截 - Edge - 完美兼容 Chrome 扩展,基于 Chromium 内核
| 模式 | 描述 |
|---|---|
| 禁用 | 禁用代理,使用系统默认网络连接 |
| 手动 | 从列表中手动选择代理 |
| 自动 | 根据 URL 规则自动选择匹配的代理 (PAC 模式) |
- 多场景支持: 创建不同的代理配置集合(如:公司、家庭、开发环境)
- 快速切换: 一键在不同场景间切换代理列表
- 灵活管理: 支持场景的新增、重命名、删除及排序
- 代理迁移: 支持将代理在不同场景间移动
- 自动应用: 手动模式下切换场景时自动选择并应用代理
- 多格式支持: 支持 AutoProxy、SwitchyLegacy、SwitchyOmega、PAC 等订阅格式
- 自动更新: 支持定时自动更新(1分钟/6小时/12小时/1天)
- 规则反转: 支持反转订阅的匹配和绕过规则(白名单/黑名单模式)
- 规则预览: 可快速查看从订阅中提取的匹配和绕过规则列表
- 唯一 ID: 每个代理和场景具有唯一 ID,便于精确管理
- 不走代理的地址 (
bypass_rules): 手动模式下直接连接的域名/IP - 走代理的地址 (
include_rules): 自动模式下需要代理访问的域名 - 备用策略: 自动模式下连接失败时选择直接连接或拒绝连接
- 支持通配符
*和域名匹配 - 适用于不同网站使用不同代理的场景
- 用户名/密码认证
- 自动处理代理服务器的认证请求
- 凭证信息的安全存储
- 连接测试: 检测代理可用性
- 延迟测量: 测试代理响应时间
- 批量测试: 一键测试所有代理
- 颜色指示: 绿色(<500ms) / 橙色(≥500ms) / 红色(失败)
- 检测浏览器当前代理设置
- 检测扩展是否成功接管代理控制
- 检测其他扩展是否抢占代理控制权
- 提供状态、警告、错误三种检测结果
- 脚本视图: 查看自动生成的 PAC 脚本内容
- 规则列表: 清晰展示所有生效的代理匹配规则
- 调试支持: 方便排查自动模式下的匹配问题
- 浅色模式: 白天使用
- 深色模式: 夜间使用
- 自动切换: 根据时间自动切换主题(可配置时间段)
| 存储类型 | 存储内容 | 描述 |
|---|---|---|
| 本地存储 (local) | 代理列表、主题设置、语言设置、同步配置 | 始终启用,确保离线可用和数据持久化 |
| 云端同步 (sync) | 完整配置数据(分块存储) | 可选功能,使用分块存储绕过配额限制 |
- 使用
chrome.storage.syncAPI(Chrome)或browser.storage.sync(Firefox) - 通过 Chrome/Firefox 账号自动同步
- 适用于同一浏览器账号的多设备同步
- 分块存储: 配置数据自动分块(每块 7KB)存储,绕过 8KB 单项配额限制
- 数据校验: 使用校验和确保同步数据的完整性
- 原子操作: Push 操作先清空旧数据再写入新数据,保证一致性
- 配额显示: 实时显示已用/总配额(100KB)和分块数量
- 通过 GitHub Gist 在浏览器和设备间同步配置
- 需要配置 GitHub Personal Access Token
- 支持手动 push/pull 或自动同步
- 配置内容加密存储,导出时自动清除敏感信息
| 配置项 | 描述 |
|---|---|
| 访问密钥 | GitHub Personal Access Token(需具有 gist 权限) |
| 文件名 | Gist 中的文件名,默认为 proxy_assistant_config.json |
| Gist ID | 自动识别保存,无需手动输入 |
| 操作 | 描述 |
|---|---|
| Push | 将本地配置上传至云端/Gist |
| Pull | 从云端/Gist 下载配置到本地 |
| 测试连接 | 验证 Gist Token 有效性及配置状态 |
- 导出配置: 生成包含所有代理信息、主题设置、语言设置等信息的 JSON 文件
- 导入配置: 支持从 JSON 文件恢复配置
- 数据安全: 导出文件自动清除敏感信息(Token、密码)
- 格式兼容: 支持导入旧版本配置文件
本扩展支持以下语言:
| 语言 | 代码 | 状态 |
|---|---|---|
| 简体中文 | zh-CN | ✅ 已支持 |
| 繁體中文 | zh-TW | ✅ 已支持 |
| English | en | ✅ 已支持 |
| 日本語 | ja | ✅ 已支持 |
| Français | fr | ✅ 已支持 |
| Deutsch | de | ✅ 已支持 |
| Español | es | ✅ 已支持 |
| Português | pt | ✅ 已支持 |
| Русский | ru | ✅ 已支持 |
| 한국어 | ko | ✅ 已支持 |
ProxyAssistant/
├── conf/ # 示例配置
│ └── demo.json # 示例配置文件
├── readme/ # 多语言文档
│ ├── README-zh-TW.md # 繁体中文
│ ├── README-en.md # 英文
│ ├── README-ja.md # 日文
│ ├── README-fr.md # 法文
│ ├── README-de.md # 德文
│ ├── README-es.md # 西班牙文
│ ├── README-pt.md # 葡萄牙文
│ ├── README-ru.md # 俄文
│ └── README-ko.md # 韩文
├── src/ # 源代码
│ ├── manifest_chrome.json # Chrome 扩展配置 (Manifest V3)
│ ├── manifest_firefox.json # Firefox 扩展配置
│ ├── main.html # 设置页面
│ ├── popup.html # 弹窗页面
│ ├── _locales/ # 国际化资源
│ ├── js/
│ │ ├── main.js # 设置页面主逻辑
│ │ ├── popup.js # 弹窗 UI 逻辑
│ │ ├── worker.js # Service Worker (Chrome) / Background Script (Firefox)
│ │ ├── i18n.js # 国际化支持
│ │ ├── storage.js # 存储管理模块
│ │ ├── proxy.js # 代理管理模块
│ │ ├── scenarios.js # 场景管理模块
│ │ ├── sync.js # 数据同步模块
│ │ ├── subscription.js # 订阅功能模块
│ │ ├── theme.js # 主题切换模块
│ │ ├── detection.js # 代理检测模块
│ │ ├── validator.js # 数据验证模块
│ │ ├── language.js # 语言选择模块
│ │ ├── utils.js # 工具函数模块
│ │ ├── config.js # 配置常量模块
│ │ ├── version.js # 版本管理模块
│ │ └── jquery.js # jQuery 库
│ ├── css/
│ │ ├── main.css # 设置页面样式 (含通用组件)
│ │ ├── popup.css # 弹窗样式
│ │ ├── theme.css # 主题样式
│ │ ├── tabs.css # 标签页样式
│ │ └── eye-button.css # 显示密码按钮样式
│ └── images/ # 图片资源
│ ├── icon-16.png
│ ├── icon-32.png
│ ├── icon-48.png
│ ├── icon-128.png
│ └── logo-128.png
├── public/ # 公共资源
│ └── img/ # 演示和宣传图片
├── tests/ # 测试目录
│ ├── jest.config.js # Jest 测试配置
│ ├── setup.js # 测试环境设置
│ ├── __mocks__/ # Mock 文件
│ │ └── chrome.js # Chrome API Mock
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── e2e/ # 端到端测试
├── script/ # 构建脚本
│ └── build.sh # 扩展构建脚本
├── release/ # 版本发布说明
│ └── *.md # 各版本更新日志
├── doc/ # 文档目录
├── build/ # 构建产物目录
├── package.json # 项目依赖配置
├── package-lock.json # 锁定依赖版本
├── Makefile # 构建命令入口
├── jest.config.js # Jest 配置(指向 tests/jest.config.js)
├── AGENTS.md # 开发指南
└── LICENSE # MIT 开源协议
方式一(推荐): 从 Chrome 官方商店安装
- 打开 Chrome,访问 Chrome 网上应用店
- 搜索"代理助手"
- 点击"添加至 Chrome"
方式二: 本地安装
- 方案 A(使用源码): 下载源码,将
src/manifest_chrome.json重命名为manifest.json,然后加载src目录 - 方案 B(使用安装包):
- 前往 GitHub Releases 页面
- 下载
proxy-assistant-chrome-x.x.x.zip文件 - 将下载的 ZIP 文件解压到任意目录
- 打开 Chrome,访问
chrome://extensions/ - 开启右上角的 "开发者模式"
- 点击左上角的 "加载已解压的扩展程序" 按钮
- 选择第 3 步解压的文件夹
- 安装成功后扩展会出现在扩展列表中
方式一(推荐): 从 Firefox 官方附加组件安装
- 打开 Firefox,访问 Firefox 附加组件
- 搜索"代理助手"
- 点击"添加到 Firefox"
方式二: 本地安装
- 从 release 目录下载 Firefox 扩展安装包(
.xpi文件) - 打开 Firefox,访问
about:addons - 点击 齿轮图标 → 从文件安装附加组件
- 选择下载的
.xpi文件
Edge 浏览器基于 Chromium 内核,可以直接安装 Chrome 扩展。
方式一(推荐): 从 Chrome 网上应用店安装
- 打开 Edge,访问
edge://extensions/ - 在"发现新扩展"区域,点击"获取 Chrome 网上应用店中的扩展",访问 Chrome 网上应用店
- 搜索"代理助手"
- 点击"获取"然后"添加到 Microsoft Edge"
方式二: 本地安装
- 前往 GitHub Releases 页面
- 下载
proxy-assistant-chrome-x.x.x.zip文件 - 将下载的 ZIP 文件解压到任意目录
- 打开 Edge,访问
edge://extensions/ - 开启左下角的 "开发者模式"
- 点击 "选择解压缩的目录" 按钮
- 选择第 3 步解压的文件夹
- 安装成功后扩展会出现在扩展列表中
- 点击扩展图标打开弹窗
- 点击 "设置" 按钮打开设置页面
- 点击 "新增代理" 按钮添加新的代理
- 填写代理信息:
- 代理名称
- 协议类型 (HTTP/HTTPS/SOCKS4/SOCKS5)
- 代理地址 (IP 或域名)
- 端口号
- (可选) 用户名和密码
- (可选) URL 规则配置
- 点击 "保存" 按钮
手动模式:
- 在弹窗中选择 "手动" 模式
- 从列表中选择代理
- 状态显示"已连接"表示已生效
自动模式:
- 在弹窗中选择 "自动" 模式
- 在设置页面为每个代理配置 URL 规则
- 根据访问的网站自动选择代理
前置要求:
- Node.js >= 14
- npm >= 6
- Chrome / Firefox 浏览器(用于测试)
- web-ext(用于构建 Firefox XPI,可选)
安装依赖:
make test_init
# 或
npm install| 命令 | 描述 |
|---|---|
make test |
运行所有测试(单元 + 集成 + e2e) |
make test_nocache |
不使用缓存运行测试 |
make test_unit |
仅运行单元测试 |
make test_integration |
仅运行集成测试 |
make test_e2e |
仅运行 e2e 测试 |
make test_watch_nocache |
监听模式运行测试 |
直接使用 npm:
npm test # 运行所有测试
npm run test:unit # 仅运行单元测试
npm run test:integration # 仅运行集成测试
npm run test:e2e # 仅运行 e2e 测试
npm run test:watch # 监听模式运行测试
npm run test:coverage # 运行测试并生成覆盖率报告| 命令 | 描述 |
|---|---|
make build |
构建 Chrome 和 Firefox 扩展 |
make clean |
清理构建产物 |
make test_clean |
清理测试缓存和覆盖率文件 |
指定版本号:
make build VERSION=dev
# 或
./script/build.sh dev构建产物:
build/
├── ProxyAssistant_{VERSION}_chrome.zip # Chrome 安装包
├── ProxyAssistant_{VERSION}_chrome.tar.gz # Chrome 源码包
├── ProxyAssistant_{VERSION}_firefox.zip # Firefox 安装包
├── ProxyAssistant_{VERSION}_firefox.tar.gz # Firefox 源码包
└── ProxyAssistant_{VERSION}_firefox.xpi # Firefox 官方扩展包
Chrome 本地安装:
- 修改
src/manifest_chrome.json为manifest.json - 打开 Chrome,访问
chrome://extensions/ - 开启 "开发者模式"
- 点击 "加载已解压的扩展程序"
- 选择
src目录
Firefox 本地安装:
- 使用
make build生成 XPI 文件 - 打开 Firefox,访问
about:addons - 点击 齿轮图标 → 从文件安装附加组件
- 选择生成的
.xpi文件
- 缩进: 2 个空格
- 引号: 单引号
- 命名: 小驼峰 (camelCase),常量使用大写下划线
- 分号: 一致使用
详细规范请参考 AGENTS.md
支持以下匹配规则:
# 精确匹配
google.com
# 子域名匹配
.google.com
www.google.com
# 通配符匹配
*.google.com
*.twitter.com
# IP 地址
192.168.1.1
10.0.0.0/8
自动模式下,当代理连接失败时:
| 策略 | 描述 |
|---|---|
| 直接连接 (DIRECT) | 绕过代理,直接连接目标网站 |
| 拒绝连接 (REJECT) | 拒绝该请求 |
自动模式使用 PAC(Proxy Auto-Config)脚本:
- 根据当前 URL 自动选择代理
- 按代理列表顺序匹配,返回第一个匹配的代理
- 支持失败回退策略
- 浏览器启动时自动恢复上次配置
| 操作 | 方式 |
|---|---|
| 展开/收起代理卡片 | 点击卡片头部 |
| 展开/收起所有卡片 | 点击"全部展开/收起"按钮 |
| 拖拽排序代理 | 拖动卡片头部的拖拽手柄 |
| 显示/隐藏密码 | 点击密码输入框右侧的眼睛图标 |
| 启用/禁用单个代理 | 卡片上的开关 |
| 测试单个代理 | 点击"连接测试"按钮 |
| 测试所有代理 | 点击"全部测试"按钮 |
| 快速关闭弹窗 | 在页面按 ESC 键 |
- 导出配置: 点击"导出配置"下载 JSON 文件
- 导入配置: 点击"导入配置"选择 JSON 文件恢复
配置包含内容:
- 所有代理信息
- 主题设置
- 深色模式时间段
- 语言设置
- 同步开关状态
点击"检测代理效果"按钮可以:
- 查看当前浏览器代理模式
- 检测扩展是否成功接管代理
- 检测是否有其他扩展抢占控制
- 获取问题诊断和建议
- Chrome 使用 Manifest V3 规范
- Service Worker 替代后台页面
- Firefox 使用 background scripts + onRequest API
- 支持浏览器原生同步存储和 GitHub Gist 同步
| 模块 | 文件 | 功能描述 |
|---|---|---|
| 主程序 | main.js | 设置页面主逻辑、场景管理、代理 CRUD、拖拽排序、导入导出、代理检测 |
| 弹窗 | popup.js | 弹窗界面交互、代理状态展示、快速切换代理、自动匹配展示 |
| 后台 | worker.js | 代理配置管理、PAC 脚本生成、认证处理、代理测试、订阅自动更新、存储变化监听 |
| 存储 | storage.js | 本地/云端存储管理、分块同步、数据校验、配置导入导出 |
| 国际化 | i18n.js | 多语言支持、实时切换、动态翻译加载 |
| 主题 | theme.js | 浅色/深色主题切换、自动根据时间切换 |
| 场景 | scenarios.js | 多场景支持、场景切换、场景重命名/删除/排序 |
| 同步 | sync.js | 浏览器原生同步、GitHub Gist 同步 |
| 订阅 | subscription.js | 代理订阅解析 (AutoProxy/SwitchyLegacy/SwitchyOmega/PAC)、自动更新 |
| 代理 | proxy.js | 代理列表渲染、编辑、测试、拖拽排序 |
| 检测 | detection.js | 代理状态检测、扩展接管检测、冲突检测 |
| 验证 | validator.js | IP/域名/端口/规则格式验证 |
| 工具 | utils.js | 通用工具函数、DOM 操作辅助 |
| 语言 | language.js | 语言下拉菜单交互处理 |
| 配置 | config.js | 默认配置常量、系统配置管理 |
chrome.storage.local: 本地存储(始终使用)chrome.storage.sync: 云端同步存储(可选)chrome.storage.session: 会话存储(认证信息、状态缓存)- 遵循本地优先原则,解决同步配额问题
- 分块存储(每块 7KB)绕过 8KB 配额限制
| 版本 | 描述 |
|---|---|
| v1 | 初始格式 |
| v2 | 增加场景支持 |
| v3 | 增加订阅支持 |
| v4 | 统一代理禁用状态、使用唯一 ID、订阅规则反转 |
| 功能 | Chrome | Firefox |
|---|---|---|
| 手动模式 | ✅ | ✅ |
| 自动模式 | ✅ | ✅ |
| 代理认证 | ✅ | ✅ |
| 代理测试 | ✅ | ✅ |
| 主题切换 | ✅ | ✅ |
| 数据同步 | ✅ | ✅ |
| 代理检测 | ✅ | ✅ |
| 订阅功能 | ✅ | ✅ |
- 原生 JavaScript + jQuery: 无框架依赖,保持轻量
- Manifest V3: Chrome 使用 Service Worker,Firefox 使用 background scripts
- PAC 脚本: 自动模式下动态生成代理自动配置脚本
- 代理认证: 使用
webRequestAuthProviderAPI 处理认证请求 - 分块同步: 自定义分块算法解决 Chrome storage.sync 配额限制
- 订阅解析: 支持多种订阅格式的自动解析和转换
- 为不同网络环境配置不同代理
- 办公网络使用公司代理
- 家庭网络使用科学上网代理
- 一键快速切换
- 国内网站直连
- 特定网站走代理
- 根据域名自动选择
- 导入多个代理
- 批量测试延迟
- 选取最优代理使用
- 导出配置文件
- 分享给团队成员
- 统一的代理配置
-
权限说明: 本扩展需要以下权限:
proxy: 管理代理设置storage: 存储配置webRequest/webRequestAuthProvider: 处理认证请求<all_urls>: 访问所有网站 URL
-
与其他扩展冲突: 如遇代理冲突,请关闭其他代理/VPN 类扩展
-
安全性: 凭证信息存储在浏览器本地,请确保设备安全
-
网络要求: 请确保代理服务器可正常访问
-
Firefox 限制: Firefox 最低支持版本为 142.0
MIT License - 详见 LICENSE 文件
欢迎提交 Issues 和 Pull Requests!
如有问题或建议,请通过 GitHub Issues 反馈。
如果这个项目对您有帮助,请给个 Star ⭐ 支持一下!





