-15-second tour: start a scan → ranking → “Elite only” filter → per-attempt details → EN/RU switch (synthetic data).
+Quick tour: set up a check → ranking → “Elite only” filter → per-attempt details → sources → switching language (synthetic data).
---
-## Why
-
-Free proxy lists are everywhere, but most of what they contain is dead, slow, or blocked by the site you actually care about. A proxy that answers `example.com` may still fail your API, return a captcha page with status `200`, or sit on a spam blacklist.
+## What it does
-**Proxy Workbench answers one practical question: _which of these proxies really work for my service, right now, and how well?_**
+Free proxy lists are everywhere, but most addresses in them are dead, slow or blocked by exactly the site you care about. Proxy Workbench does the tedious part for you:
-- It gathers candidates from dozens of public lists (or your own files) and de-duplicates them.
-- It sends **real HTTP(S) requests through each proxy** to every service you specify — several times — and checks status codes, body text, or even a SHA-256 of the response.
-- It ranks survivors by **median latency, jitter and success rate**, flags **blacklisted IPs** (local denylist + optional DNSBL), rates **anonymity** (transparent / anonymous / elite) and exports TXT / CSV / JSON plus ready-to-use `host:port` lists per protocol.
+1. **Collect.** Downloads addresses from 150 public sources (106 enabled out of the box) or your own files and removes duplicates.
+2. **Check.** Sends real requests through every proxy to your sites — several times — and checks the status code, required text on the page and speed. It also finds the country, the anonymity level (transparent / anonymous / elite) and whether the IP is blacklisted.
+3. **Deliver.** The best proxies land in TXT / CSV / JSON files, browser, Clash and sing-box configs, a rotating proxy at `127.0.0.1:8899`, and an API. Pools and schedules keep the list fresh on their own.
Everything runs on your machine. The GUI binds to `127.0.0.1` only.
@@ -53,7 +53,7 @@ Everything runs on your machine. The GUI binds to `127.0.0.1` only.
-Screenshots use synthetic data from documentation IP ranges (RFC 5737). The interface is available in English and Russian (EN/RU toggle in the header).
+Screenshots use synthetic data from documentation IP ranges (RFC 5737). The interface speaks 12 languages (language menu in the header).
## ✨ Features
@@ -83,8 +83,15 @@ Everything runs on your machine. The GUI binds to `127.0.0.1` only.
| **Exit country** | The anonymity judge also reports the address the traffic really leaves from; the table shows `DE → NL` when it differs from the proxy's own country. |
| **Local API for your code** | The GUI (or `serve` on a server) answers `GET /random?protocol=socks5&country=DE` or `/proxies?max_latency=800&format=txt` with the freshest working proxies, so scripts, scrapers and bots can pick a proxy with one HTTP request. |
| **Safe by default** | Loopback-only GUI with a per-session token, CSRF/Host checks, SSRF-hardened source fetching (no private/metadata IPs, validated redirects, size limits), credential-like headers rejected. |
-| **English & Russian UI** | Switch with the EN/RU button; defaults to your browser language. Dark and light themes. |
-| **Zero setup** | A Windows `.exe` that needs nothing else, `pipx install`, Docker Compose, or a double-click launcher that creates its own virtual environment. |
+| **Desktop app** | Runs in the macOS menu bar with pause/start, optional start at login and one running instance; recovers correctly after sleep. The browser interface opens from it. |
+| **Pools** | A named pool keeps N working proxies for a profile, with a reserve, quotas and budgets; it refills and re-checks itself and says why it is short. |
+| **Schedules** | Re-check a collection or a pool on an interval in your time zone, with quiet hours, request/byte budgets and notifications when a proxy changes state. |
+| **Profiles and import** | Save targets and rules as named profiles with revisions. Import your own lists from TXT, URI, CSV, JSON, Clash or sing-box with a preview, column mapping and a report of every rejected line. |
+| **API keys** | Named keys with permissions, collection/pool scope, rate and concurrency limits, expiry, rotation and an audit log — on the **Keys** page or with `api-key`. |
+| **Diagnostics** | A funnel shows where candidates were lost, “why 0 results” explains an empty run in plain words, and a redacted diagnostic bundle can be reviewed before saving. |
+| **Backup and restore** | Backups, restore, rollback and retention cleanup, each previewed before it runs; data folders from older versions are upgraded automatically with a backup taken first. |
+| **12 languages** | English, Russian, Ukrainian, German, Spanish, French, Italian, Portuguese, Polish, Turkish, Japanese and Chinese; defaults to your system language. Redesigned dark and light themes that adapt to phones and tablets. |
+| **Zero setup** | A macOS `.dmg`, a Windows installer (or portable `.zip`), `pipx install`, Docker Compose, or a double-click launcher that creates its own virtual environment. |
## 🚀 Quick start
@@ -92,7 +99,7 @@ Pick one way to install:
| Way | How | Needs |
| --- | --- | --- |
-| **macOS app** | Download `proxy-workbench-…-macos-arm64.dmg` from the [latest release](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) and drag `Proxy Workbench.app` into Applications | macOS 11+, Apple Silicon |
+| **macOS app** | Download `proxy-workbench-…-macos-arm64.dmg` from the [latest release](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) and drag `Proxy Workbench.app` into Applications | macOS 11+, Apple Silicon (`arm64`) or Intel (`x86_64`) |
| **Windows app** | Download `proxy-workbench-…-windows-x64-setup.exe` from the [latest release](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) and run it; there is a portable `.zip` too, and a separate `proxy-workbench-cli.exe` for the command line | nothing else |
| **pipx** (Windows, macOS, Linux) | `pipx install git+https://github.com/DavidVoitenko/proxy-workbench` then `proxy-workbench` | Python 3.11+ and [pipx](https://pypa.io/pipx/) |
| **Source folder** | Download the code (**Code → Download ZIP** or `git clone`), then double-click `Start.bat` (Windows) / `Start.command` (macOS) or run `./run.sh` (Linux) | Python 3.11+ |
@@ -107,7 +114,7 @@ proxy-workbench --no-desktop # the same, spelled the other way
proxy-workbench --print-paths # which data/cache/log folders this launch would use
```
-Installed builds keep their data in your own per-user folders (`%LOCALAPPDATA%\proxy-workbench`, `~/Library/Application Support/proxy-workbench` or `~/.local/share/proxy-workbench`) and never write into their own program folder; a source checkout keeps `data/` next to the project; `PROXY_WORKBENCH_DATA` overrides all of it. Portable mode is opt-in — see [docs/packaging/README.md](docs/packaging/README.md).
+Installed builds keep their data in your own per-user folders (`%LOCALAPPDATA%\proxy-workbench`, `~/Library/Application Support/proxy-workbench` or `~/.local/share/proxy-workbench`) and never write into their own program folder; a source checkout keeps `data/` next to the project; `PROXY_WORKBENCH_DATA` overrides all of it. Portable mode is opt-in: put an empty `proxy-workbench-portable.json` next to the program and it keeps its data beside itself.
Release artifacts are **not code-signed**: this project has no signing certificate, and the release notes and the manifest say `signed: false` rather than claiming otherwise. macOS Gatekeeper therefore asks you to confirm the first start, and Windows SmartScreen may too (**More info → Run anyway**). Every release lists its SHA-256 checksum, which proves the file is the one that was published — it does not identify a publisher.
@@ -283,7 +290,7 @@ curl -x socks5h://127.0.0.1:8899 https://example.org/
On a server, start it with `./run.sh gateway` and narrow the pool with the usual filters, for example `gateway --protocol socks5 --country DE --max-latency 1500`. Binding to a network address (`--host 0.0.0.0`) requires a password: `--gateway-token
-15 секунд: запуск проверки → рейтинг → фильтр «только элитные» → детали попыток → переключение EN/RU (синтетические данные).
+Коротко: настройка проверки → рейтинг → фильтр «только элитные» → детали попыток → источники → смена языка (синтетические данные).
@@ -30,15 +32,13 @@
> **Статус:** публичная beta. Проект измеряет доступность и задержку; он не обещает анонимность, безопасность или стабильную работу сторонних прокси.
-## Зачем это нужно
-
-Списков бесплатных прокси много, но большая часть адресов в них мёртвые, медленные или заблокированы именно на том сайте, который вам нужен. Прокси, который открывает `example.com`, может не работать с вашим API, отдавать капчу с кодом `200` или находиться в спам-блеклисте.
+## Что делает программа
-**Proxy Workbench отвечает на практический вопрос: _какие из этих прокси действительно работают с моим сервисом прямо сейчас и насколько хорошо?_**
+Списков бесплатных прокси много, но большинство адресов в них мёртвые, медленные или заблокированы как раз на том сайте, который вам нужен. Proxy Workbench делает всю грязную работу за три шага:
-- Собирает кандидатов из десятков публичных списков (или ваших файлов) и убирает дубликаты.
-- Делает **настоящие HTTP(S)-запросы через каждый прокси** ко всем указанным сервисам — несколько раз — и проверяет HTTP-код, текст ответа или SHA-256.
-- Ранжирует прошедшие по **медианной задержке, разбросу и доле успехов**, отмечает **адреса из блеклистов** (локальный denylist + опциональные DNSBL), определяет **уровень анонимности** (прозрачный / анонимный / элитный) и экспортирует TXT / CSV / JSON и готовые списки `host:port` по протоколам.
+1. **Собирает.** Скачивает адреса из 150 открытых источников (106 подключены сразу) или из ваших файлов и убирает дубликаты.
+2. **Проверяет.** Отправляет через каждый прокси настоящие запросы к вашим сайтам — по несколько раз — и смотрит код ответа, нужный текст на странице и скорость. Дополнительно определяет страну, анонимность (прозрачный / анонимный / элитный) и чистоту IP.
+3. **Отдаёт готовое.** Лучшие прокси — в файлах TXT / CSV / JSON, в конфигурациях для браузера, Clash и sing-box, через ротирующий прокси `127.0.0.1:8899` или через API. Пулы и расписания держат список свежим сами.
Всё работает на вашем компьютере. Интерфейс слушает только `127.0.0.1`.
@@ -86,8 +86,15 @@
| **Страна выхода** | Judge показывает, с какого адреса трафик на самом деле выходит в интернет; если страна отличается от страны прокси, в таблице видно `DE → NL`. |
| **Готовые конфиги** | `proxy.pac` для браузера и `clash.yaml` для Clash / Mihomo с автоматическим выбором самого быстрого прокси; над файлами сводка по протоколам и странам. |
| **Безопасность по умолчанию** | GUI только на loopback с токеном сессии и проверкой Host/Origin, защищённая загрузка источников (без private/metadata IP, проверка redirects, лимиты размера), credential-like заголовки отклоняются. |
-| **Русский и английский интерфейс** | Кнопка EN/RU; по умолчанию язык браузера. Тёмная и светлая темы. |
-| **Без настройки** | `.exe` для Windows без установки Python, `pipx install`, Docker Compose или запуск двойным кликом, который сам создаёт виртуальное окружение. |
+| **Приложение для рабочего стола** | Живёт в меню-баре macOS: пауза и запуск, автозапуск при входе по желанию, один экземпляр, корректное восстановление после сна. Интерфейс в браузере открывается из него. |
+| **Пулы** | Именованный пул держит N рабочих прокси для профиля с резервом, квотами и бюджетами; сам пополняется, перепроверяется и объясняет, почему не хватает. |
+| **Расписания** | Перепроверка коллекции или пула по интервалу в вашем часовом поясе, тихие часы, бюджеты запросов и трафика, уведомления о смене состояния прокси. |
+| **Профили и импорт** | Цели и правила сохраняются как именованные профили с ревизиями. Импорт своих списков из TXT, URI, CSV, JSON, Clash и sing-box с предпросмотром, сопоставлением колонок и отчётом по каждой отклонённой строке. |
+| **API-ключи** | Именованные ключи с правами, областью действия (коллекции и пулы), лимитами, сроком, ротацией и журналом аудита — на странице **Ключи** или командой `api-key`. |
+| **Диагностика** | Воронка показывает, где потерялись кандидаты; «почему 0 результатов» объясняет пустой прогон простыми словами; диагностический пакет без секретов можно просмотреть перед сохранением. |
+| **Резервные копии** | Backup, восстановление, откат и очистка по сроку хранения — каждое действие сначала показывает предпросмотр; папки данных старых версий обновляются автоматически, перед этим делается копия. |
+| **12 языков** | Русский, английский, украинский, немецкий, испанский, французский, итальянский, португальский, польский, турецкий, японский и китайский; по умолчанию язык системы. Переработанные тёмная и светлая темы, адаптация под телефоны и планшеты. |
+| **Без настройки** | `.dmg` для macOS, установщик (или portable `.zip`) для Windows, `pipx install`, Docker Compose или запуск двойным кликом, который сам создаёт виртуальное окружение. |
## 🚀 Быстрый старт
@@ -95,7 +102,7 @@
| Способ | Как | Что нужно |
| --- | --- | --- |
-| **Программа для macOS** | Скачайте `proxy-workbench-…-macos-arm64.dmg` из [последнего релиза](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) и перетащите `Proxy Workbench.app` в «Программы» | macOS 11+, Apple Silicon |
+| **Программа для macOS** | Скачайте `proxy-workbench-…-macos-arm64.dmg` из [последнего релиза](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) и перетащите `Proxy Workbench.app` в «Программы» | macOS 11+, Apple Silicon (`arm64`) или Intel (`x86_64`) |
| **Программа для Windows** | Скачайте `proxy-workbench-…-windows-x64-setup.exe` из [последнего релиза](https://github.com/DavidVoitenko/proxy-workbench/releases/latest) и запустите установщик; есть portable-архив `.zip` и отдельный `proxy-workbench-cli.exe` для командной строки | больше ничего |
| **pipx** (Windows, macOS, Linux) | `pipx install git+https://github.com/DavidVoitenko/proxy-workbench`, затем `proxy-workbench` | Python 3.11+ и [pipx](https://pypa.io/pipx/) |
| **Папка с кодом** | Скачайте код (**Code → Download ZIP** или `git clone`) и запустите, как в таблице ниже | Python 3.11+ |
@@ -110,7 +117,7 @@ proxy-workbench --no-desktop # то же самое, другими слов
proxy-workbench --print-paths # какие папки data/cache/logs выберет этот запуск
```
-Установленная сборка хранит данные в персональных папках пользователя (`%LOCALAPPDATA%\proxy-workbench`, `~/Library/Application Support/proxy-workbench` или `~/.local/share/proxy-workbench`) и **никогда** не пишет в собственную папку программы; исходники продолжают использовать `data/` рядом с проектом; переменная `PROXY_WORKBENCH_DATA` задаёт папку явно. Portable mode включается только по явному запросу — см. [docs/packaging/README.md](docs/packaging/README.md).
+Установленная сборка хранит данные в персональных папках пользователя (`%LOCALAPPDATA%\proxy-workbench`, `~/Library/Application Support/proxy-workbench` или `~/.local/share/proxy-workbench`) и **никогда** не пишет в собственную папку программы; исходники продолжают использовать `data/` рядом с проектом; переменная `PROXY_WORKBENCH_DATA` задаёт папку явно. Portable-режим включается только явно: положите пустой файл `proxy-workbench-portable.json` рядом с программой, и она будет хранить данные рядом с собой.
Артефакты релизов **не подписаны сертификатом**: у проекта нет ключа подписи, и в заметках о релизе и в манифесте стоит `signed: false`, а не утверждение о подписи. Поэтому при первом запуске macOS попросит подтвердить открытие, а SmartScreen может попросить то же (**Подробнее → Выполнить в любом случае**). У каждого релиза опубликована контрольная сумма SHA-256: она доказывает, что файл именно тот, что опубликован, но не называет издателя.
@@ -374,7 +381,7 @@ curl -x socks5h://127.0.0.1:8899 https://example.org/
На сервере шлюз запускает `./run.sh gateway`; пул сужается обычными фильтрами, например `gateway --protocol socks5 --country DE --max-latency 1500`. Для сетевого адреса (`--host 0.0.0.0`) нужен пароль: `--gateway-token <секрет>` или переменная `PROXY_WORKBENCH_GATEWAY_TOKEN`; если он не задан, шлюз придумывает свой и печатает его. Клиенты входят с любым именем и этим паролем через HTTP Basic или логин/пароль SOCKS5.
-**Пароль шлюза — не токен API.** Это разные идентичности намеренно (CONTRACTS §5.1): тот, кому вы дали пароль для телефона в сети, не должен читать опубликованный снапшот, а утёкший токен API не должен работать как прокси. `serve` получает `--api-token`, `gateway` — `--gateway-token`; в `compose.yml` показаны обе переменные.
+**Пароль шлюза — не токен API.** Это разные идентичности намеренно: тот, кому вы дали пароль для телефона в сети, не должен читать опубликованный снапшот, а утёкший токен API не должен работать как прокси. `serve` получает `--api-token`, `gateway` — `--gateway-token`; в `compose.yml` показаны обе переменные.
Браузер без расширений: укажите `http://127.0.0.1:8765/pac` как адрес автоматической настройки прокси. Он отдаёт 10 лучших подходящих прокси и принимает те же фильтры, что API, например `/pac?country=DE`. `/clash` возвращает готовый конфиг Clash / Mihomo.
@@ -498,7 +505,7 @@ docker run -d --name pw-gateway -p 127.0.0.1:8899:8899 -e PROXY_WORKBENCH_API_TO
- `maintenance.py` — блокировка папки `data` и очистка локальных данных;
- `sources.json` — встроенные источники.
- `proxytool.py`, `gui.py` — запуск из папки с кодом (их вызывают `Start.bat`, `Start.command`, `run.sh`).
-- `packaging/` — сборка `.app`/`.dmg` для macOS и GUI/CLI `.exe` + per-user installer для Windows (PyInstaller), сборка helper меню-бара, манифест артефактов и сквозные проверки собранного пакета. Подробности и честная матрица проверенных сборок — в [`docs/packaging/README.md`](docs/packaging/README.md).
+- `packaging/` — сборка `.app`/`.dmg` для macOS и GUI/CLI `.exe` + per-user installer для Windows (PyInstaller), сборка helper меню-бара, манифест артефактов и сквозные проверки собранного пакета.
- `compose.yml` — проверка, API и ротирующий прокси в Docker.
- `tests/` — isolated unit and local mock tests.
- `docs/assets/` — скриншоты и изображение для превью.
@@ -524,7 +531,7 @@ docker run -d --name pw-gateway -p 127.0.0.1:8899:8899 -e PROXY_WORKBENCH_API_TO
## ❓ Частые вопросы
**Это делает меня анонимным?**
-Нет. Proxy Workbench измеряет _доступность и задержку_. Публичный прокси видит ваш IP, адрес назначения и — для обычного HTTP — сам трафик. Не отправляйте пароли, cookies и токены через непроверенные публичные прокси. См. [PRIVACY.md](PRIVACY.md).
+Нет. Proxy Workbench измеряет _доступность и задержку_. Публичный прокси видит ваш IP, адрес назначения и — для обычного HTTP — сам трафик. Не отправляйте пароли, cookies и токены через непроверенные публичные прокси. Сам Proxy Workbench не отправляет телеметрию и не требует аккаунтов.
**Почему прокси работает в браузере, а здесь не прошёл?**
Редиректы не выполняются, TLS-сертификаты проверяются, а каждый сервис должен пройти свой порог. Откройте **Детали** — там ошибка каждой попытки.
@@ -546,8 +553,15 @@ IP нет в вашем локальном denylist и (если включен
## 🗺 Планы
-- [x] Английский интерфейс и переключатель EN/RU
-- [ ] Установка через `pipx` / PyPI и единая команда `proxy-workbench`
+- [x] Интерфейс на 12 языках
+- [x] Установка через `pipx` и единая команда `proxy-workbench`
+- [x] Приложение: меню-бар macOS, установщик Windows, персональные папки данных
+- [x] Постоянные пулы, расписания, профили с ревизиями и импорт списков
+- [x] API-ключи с правами, областью действия, ротацией и аудитом
+- [x] Воронка диагностики, резервные копии и восстановление с предпросмотром
+- [ ] Проверка прокси с логином и паролем
+- [ ] Подписанные сборки и автообновление
+- [ ] Пакет на PyPI
- [x] Определение уровня анонимности (transparent / anonymous / elite)
- [x] Экспорт `host:port` по протоколам
- [x] Колонка страны и фильтры по локальной базе GeoIP
@@ -560,7 +574,7 @@ IP нет в вашем локальном denylist и (если включен
## 🤝 Участие
-Рады любому вкладу: баг-репорты, новые источники, документация, переводы и код. Начните с [CONTRIBUTING.md](CONTRIBUTING.md), соблюдайте [Code of Conduct](CODE_OF_CONDUCT.md). Уязвимости сообщайте приватно по [SECURITY.md](SECURITY.md).
+Рады баг-репортам, новым источникам, переводам и коду — откройте [issue](../../issues) или pull request. Об уязвимостях сообщайте приватно через [GitHub security advisories](../../security/advisories/new), а не в публичном issue.
Если проект сэкономил вам время — **поставьте ⭐, это помогает другим его найти.**
diff --git a/compose.yml b/compose.yml
index 3877cef..11beccd 100644
--- a/compose.yml
+++ b/compose.yml
@@ -10,8 +10,8 @@
# the read-only API; `PROXY_WORKBENCH_GATEWAY_TOKEN` is the password a proxy client
# gives the gateway. They are deliberately never the same value: whoever knows the
# gateway password (a phone on the LAN, a QR code) must not be able to read the
-# published snapshot, and a leaked API token must not be a working proxy
-# (CONTRACTS §5.1, defect 18). Leave the gateway variable unset and the gateway
+# published snapshot, and a leaked API token must not be a working proxy.
+# Leave the gateway variable unset and the gateway
# makes its own password and prints it in its log.
#
# Edit the check command to test your own service: --url https://example.org/health
diff --git a/docs/assets/demo.gif b/docs/assets/demo.gif
index 4da5fb3..1e98757 100644
Binary files a/docs/assets/demo.gif and b/docs/assets/demo.gif differ
diff --git a/docs/assets/screenshots/details-dark.png b/docs/assets/screenshots/details-dark.png
index ce2ca38..ead8005 100644
Binary files a/docs/assets/screenshots/details-dark.png and b/docs/assets/screenshots/details-dark.png differ
diff --git a/docs/assets/screenshots/results-dark.png b/docs/assets/screenshots/results-dark.png
index 02c740b..e606226 100644
Binary files a/docs/assets/screenshots/results-dark.png and b/docs/assets/screenshots/results-dark.png differ
diff --git a/docs/assets/screenshots/results-light.png b/docs/assets/screenshots/results-light.png
index 93c7896..aee9def 100644
Binary files a/docs/assets/screenshots/results-light.png and b/docs/assets/screenshots/results-light.png differ
diff --git a/docs/assets/screenshots/ru/details-dark.png b/docs/assets/screenshots/ru/details-dark.png
index d7b03b5..f9e573f 100644
Binary files a/docs/assets/screenshots/ru/details-dark.png and b/docs/assets/screenshots/ru/details-dark.png differ
diff --git a/docs/assets/screenshots/ru/results-dark.png b/docs/assets/screenshots/ru/results-dark.png
index c534f74..b47d3b9 100644
Binary files a/docs/assets/screenshots/ru/results-dark.png and b/docs/assets/screenshots/ru/results-dark.png differ
diff --git a/docs/assets/screenshots/ru/results-light.png b/docs/assets/screenshots/ru/results-light.png
index 7870c92..d7c58b6 100644
Binary files a/docs/assets/screenshots/ru/results-light.png and b/docs/assets/screenshots/ru/results-light.png differ
diff --git a/docs/assets/screenshots/ru/scan-dark.png b/docs/assets/screenshots/ru/scan-dark.png
index a479c4a..270802f 100644
Binary files a/docs/assets/screenshots/ru/scan-dark.png and b/docs/assets/screenshots/ru/scan-dark.png differ
diff --git a/docs/assets/screenshots/scan-dark.png b/docs/assets/screenshots/scan-dark.png
index 7d85f1f..2201610 100644
Binary files a/docs/assets/screenshots/scan-dark.png and b/docs/assets/screenshots/scan-dark.png differ
diff --git a/docs/assets/social-preview.png b/docs/assets/social-preview.png
index 433ba22..a7f55bb 100644
Binary files a/docs/assets/social-preview.png and b/docs/assets/social-preview.png differ
diff --git a/docs/index.html b/docs/index.html
index 16ce6e9..c2e4cd2 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -4,11 +4,11 @@
Proxy Workbench collects public HTTP, HTTPS, SOCKS4 and SOCKS5 proxies from 55 open lists and web pages, tests every one against your own sites, rates anonymity and drops blacklisted IPs, all on your own machine.
+Proxy Workbench collects public HTTP, HTTPS, SOCKS4 and SOCKS5 proxies from a catalog of 150 sources (106 collected out of the box), tests every one against your own sites, rates anonymity and drops blacklisted IPs, all on your own machine.
- -

Optional speed test in Mbit/s; every proxy shows its provider, and hosting or data-centre ranges can be skipped.
Pick country, protocol and a sticky session in the proxy user name: country-de-session-1. Or script it: proxy-workbench get --top 5.
Point a browser, Telegram or any app at 127.0.0.1:8899: every connection goes out through the next working proxy, dead ones are skipped.
A macOS menu-bar app and a Windows installer. One running instance, optional start at login, correct recovery after sleep.
Keep N working proxies per profile with a reserve and budgets, and re-check them on a schedule in your time zone with quiet hours.
English, Russian, Ukrainian, German, Spanish, French, Italian, Portuguese, Polish, Turkish, Japanese and Chinese. Dark and light themes for desktop, tablet and phone.
API keys with permissions and audit, a funnel that explains an empty result, and backups you can preview before restoring.
GET /random?protocol=socks5&country=DE returns a fresh working proxy, so scripts and bots pick one with a single request.
Windows: the .exe from the latest release, nothing else needed. Anywhere else: pipx install git+https://github.com/DavidVoitenko/proxy-workbench, or Docker Compose.
Double-click the .exe or run proxy-workbench: the interface opens in your browser, together with the local API and the rotating proxy.
macOS: the .dmg; Windows: the installer or portable .zip from the latest release, nothing else needed. Anywhere else: pipx install git+https://github.com/DavidVoitenko/proxy-workbench, or Docker Compose.
Open the app or run proxy-workbench: the interface opens in your browser, together with the local API and the rotating proxy.
Add your site, press Find and check, then download the best proxies from the Results tab.
Prefer the terminal or a server?
@@ -130,7 +134,7 @@