Мощное расширение для управления прокси-серверами в браузере, поддерживающее Chrome/Firefox/Edge и другие браузеры, с поддержкой множественных сценариев, для легкой настройки и переключения сетевых прокси.
- HTTP - Традиционный HTTP-прокси
- HTTPS - Безопасный HTTPS-прокси
- SOCKS5 - SOCKS5-прокси с поддержкой TCP/UDP
- SOCKS4 - Совместимость со старым SOCKS4-прокси
- Chrome - Использование Manifest V3 + Service Worker
- Firefox - Использование Manifest V3 + API
proxy.onRequestдля перехвата запросов прокси - 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) | Полные данные конфигурации (фрагментированное хранение) | Опционально, использует фрагментированное хранение для обхода лимитов квоты |
- Использует API
chrome.storage.sync(Chrome) илиbrowser.storage.sync(Firefox) - Автоматическая синхронизация через учетную запись Chrome/Firefox
- Подходит для синхронизации между несколькими устройствами с одной учетной записью браузера
- Фрагментированное хранение: Данные конфигурации автоматически разбиваются на фрагменты (7КБ на фрагмент) для обхода лимита квоты в 8КБ на элемент
- Целостность данных: Использование контрольных сумм для обеспечения целостности данных синхронизации
- Атомарные операции: Операция Push удаляет старые данные перед записью новых для обеспечения согласованности
- Отображение квоты: Отображение в реальном времени использованной/общей квоты (100КБ) и количества фрагментов
- Синхронизация конфигурации между браузерами и устройствами через GitHub Gist
- Требуется настройка GitHub Personal Access Token
- Поддерживает ручной push/pull или автоматическую синхронизацию
- Содержимое конфигурации хранится в зашифрованном виде, конфиденциальная информация автоматически удаляется при экспорте
| Элемент конфигурации | Описание |
|---|---|
| Ключ доступа | GitHub Personal Access Token (требуется разрешение gist) |
| Имя файла | Имя файла в Gist, по умолчанию proxy_assistant_config.json |
| ID Gist | Автоматическое распознавание и сохранение, ручной ввод не требуется |
| Операция | Описание |
|---|---|
| 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 # Основная логика всплывающего окна
│ │ ├── worker.js # Фоновый сервис (Chrome: Service Worker)
│ │ ├── 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 # Mock API Chrome
│ ├── 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
Способ 1 (Рекомендуется): Установить из официального магазина Chrome
- Открыть Chrome, перейти в Chrome Web Store
- Поиск "Помощник прокси"
- Нажать "Установить в Chrome"
Способ 2: Локальная установка
- Вариант А (использовать исходный код): Скачать исходный код, переименовать
src/manifest_chrome.jsonвmanifest.json, затем загрузить каталогsrc - Вариант Б (использовать пакет):
- Перейти на страницу GitHub Releases
- Скачать файл
proxy-assistant-chrome-x.x.x.zip - Распаковать скачанный ZIP-файл в любой каталог
- Открыть Chrome, перейти в
chrome://extensions/ - Включить "Режим разработчика" в верхней правой части
- Нажать кнопку "Загрузить распакованное расширение" в верхней левой части
- Выбрать папку, распакованную в шаге 3
- Расширение появится в списке расширений после успешной установки
Способ 1 (Рекомендуется): Установить из официальных дополнений Firefox
- Открыть Firefox, перейти в Дополнения Firefox
- Поиск "Помощник прокси"
- Нажать "Добавить в Firefox"
Способ 2: Локальная установка
- Скачать пакет установки Firefox (файл
.xpi) из каталогаrelease - Открыть Firefox, перейти в
about:addons - Нажать значок шестеренки → Установить дополнение из файла
- Выбрать скачанный файл
.xpi
Браузер Edge основан на ядре Chromium и может напрямую устанавливать расширения Chrome.
Способ 1 (Рекомендуется): Установить из Chrome Web Store
- Открыть Edge, перейти в
edge://extensions/ - В разделе "Найти новые расширения" нажать "Получить расширения из Chrome Web Store", перейти в Chrome Web Store
- Поиск "Помощник прокси"
- Нажать "Получить" затем "Добавить в Microsoft Edge"
Способ 2: Локальная установка
- Перейти на страницу 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_clean |
Очистка кеша тестов и файлов покрытия |
Использование 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, константы используют UPPER_SNAKE_CASE
- Точка с запятой: Последовательное использование
Подробные спецификации см. в 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 | 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: Хранилище сессии (данные аутентификации, кеш состояния)- Принцип локального хранения в первую очередь, решает проблему квоты синхронизации
- Фрагментированное хранение (7КБ на фрагмент) обходит лимит квоты в 8КБ
| Версия | Описание |
|---|---|
| v1 | Начальный формат |
| v2 | Добавлена поддержка сценариев |
| v3 | Добавлена поддержка подписки |
| v4 | Унифицированный статус отключения прокси, использование уникальных ID, инверсия правил подписки |
| Функция | Chrome | Firefox |
|---|---|---|
| Ручной режим | ✅ | ✅ |
| Автоматический режим | ✅ | ✅ |
| Аутентификация прокси | ✅ | ✅ |
| Тест прокси | ✅ | ✅ |
| Переключение темы | ✅ | ✅ |
| Синхронизация данных | ✅ | ✅ |
| Определение прокси | ✅ | ✅ |
| Подписка | ✅ | ✅ |
- Нативный JavaScript + jQuery: Без зависимости от фреймворка, легковесный
- Manifest V3: Chrome использует Service Worker, Firefox использует background scripts
- PAC-скрипт: Динамически генерируемый скрипт автоматической настройки прокси в автоматическом режиме
- Аутентификация прокси: Использует API
webRequestAuthProviderдля обработки запросов аутентификации - Фрагментированная синхронизация: Пользовательский алгоритм фрагментации решает проблемы лимитов квоты Chrome storage.sync
- Разбор подписки: Поддержка автоматического разбора и преобразования нескольких форматов подписки
- Настройка разных прокси для разных сетевых сред
- Использование корпоративного прокси для офисной сети
- Использование научного прокси для домашней сети
- Быстрое переключение одним кликом
- Прямое подключение для отечественных сайтов
- Определенные сайты через прокси
- Автоматический выбор на основе домена
- Импорт нескольких прокси
- Пакетное тестирование задержки
- Выбор оптимального прокси для использования
- Экспорт файла конфигурации
- Обмен с членами команды
- Единая конфигурация прокси
-
Описание разрешений: Расширение требует следующие разрешения:
proxy: Управление настройками проксиstorage: Хранение конфигурацийwebRequest/webRequestAuthProvider: Обработка запросов аутентификации<all_urls>: Доступ ко всем URL веб-сайтов
-
Конфликты с другими расширениями: При конфликтах прокси отключить другие расширения прокси/VPN
-
Безопасность: Учетные данные хранятся локально в браузере, пожалуйста, обеспечьте безопасность вашего устройства
-
Требования к сети: Убедитесь, что прокси-сервер доступен
-
Ограничение Firefox: Минимальная требуемая версия Firefox - 142.0
MIT License - Подробности см. в файле LICENSE
Отчеты об ошибках и pull requests приветствуются!
По вопросам или предложениям отправляйте отзывы через GitHub Issues.
Если этот проект был вам полезен, пожалуйста, поставьте Star ⭐ в знак поддержки!





