Актуальная версия: 2.0.0 Скачайте актуальную версию здесь
Подробности изменений смотрите в CHANGELOG.md
Proxy Filter — комбинированный инструмент для автоматической загрузки, обработки, коррекции, фильтрации, проверки доступности и нарезки конфигураций прокси-серверов из общедоступных подписок (subscriptions).
В качестве входных форматов Proxy Filter поддерживает YAML (json) и XRay (plain text/base64).
Для работы программы требуется один из двух вариантов источников конфигураций прокси-серверов (в зависимости от режима работы, см. далее):
- файл
input_urls.txt, в который необходимо вручную скопировать список URLs подписок (по одному URL на строку). - текстовые файлы, содержащие конфигурации прокси-серверов (.txt, .yaml, файлы без расширения и пр.), размещенные в папке
temp.
Для примера в файл input_urls.txt уже добавлены несколько URLs подписок. Рекомендуется добавить дополнительные подписки, найденные в сторонних источниках (Telegram, web и др.).
Дополнительно необходимо скачать две базы данных для корректного определения географической принадлежности обрабатываемых конфигураций (для скачивания этих баз данных требуется бесплатная регистрация на сайте Maxmind.com по ссылке https://www.maxmind.com/en/geolite2/signup):
- https://download.maxmind.com/geoip/databases/GeoLite2-ASN/download?suffix=tar.gz
- https://download.maxmind.com/geoip/databases/GeoLite2-Country/download?suffix=tar.gz
Указанные базы данных рекомендуется регулярно обновлять для получения более релевантных результатов фильтрации.
Proxy Filter ожидает, что гео-базы будут доступны по двум следующим путям внутри папки программы:
- {Proxy Filter folder}\geo_db\GeoLite2-ASN.mmdb
- {Proxy Filter folder}\geo_db\GeoLite2-Country.mmdb
Поддерживаемые форматы подписок:
- YAML, json
- plain text
- plain text, base64 encoded
Proxy Filter поддерживает дополнительные пользовательские настройки, позволяющие сделать процесс фильтрации более гибким.
Для изменения пользовательских настроек задайте значения соответствующих параметров в файле config.ini.
2. 🧐 Логика работы программы
Базовые правила фильтрации:
- Поддерживаемые протоколы: VLESS, Trojan, Hysteria2, TUIC.
- Порты: согласно значениям параметров
ONLY_443иDELETE_PORTS. - Географическая принадлежность серверов: согласно значениям параметров
FILTER_MODEиCOUNTRY_LIST. - Удаление дубликатов конфигураций (100% отсутствие дубликатов не гарантируется).
- Нарезка итогового массива конфигураций на фрагменты, содержащие не более N строк конфигураций: согласно значению параметра
CHUNK_SIZE_WRITE.
После завершения работы Proxy Filter в папке output создаются текстовые файлы с именами в формате {protocol}_filtered--YYYY-MM-DD--HH-MM--{number}.txt, содержащие отфильтрованные конфигурации прокси-серверов.
WORK_MODE = d- "DOWNLOAD", загрузка файлов по ссылкам изinput_urls.txt(режим работы по-умолчанию).WORK_MODE = n- "NO DOWNLOAD", не загружать файлы, использовать локальные файлы из папкиtemp(этот режим удобен для фильтрации самостоятельно загруженных/сформированных файлов с конфигурациями).
FILTER_MODE = d- Удаление конфигураций прокси по маске из параметраCOUNTRY_LIST(если вам нужны все конфигурации из подписки, кроме некоторых), это режим работы по-умолчаниюFILTER_MODE = k- Сохранение конфигураций прокси по маске из параметраCOUNTRY_LIST(если вам нужны только некоторые конфигурации из подписки, а все остальные не нужны)
5. 🚀 Основной функционал Proxy Filter
Обработка исходных файлов
- Асинхронная загрузка файлов подписок по URL из файла
input_urls.txt. - Рандомизация User-Agent и случайная задержка между повторными попытками скачивания (маскировка под работу реальных браузеров).
Проверка, исправление и преобразование файлов подписок
- Автоматическая коррекция содержимого загружаемых файлов (в т.ч. кодировка, разделение "сцепленных" строк).
- Пропуск пустых файлов и файлов с некорректным содержимым.
- Преобразование из формата YAML в формат plain text.
- Преобразование из формата base64 в формат plain text.
Асинхронная обработка загруженных конфигураций
- Исключение неподходящих конфигурация по заданным критериям.
- Резолвинг доменов из конфигураций прокси для определения IP их серверов.
- Определение географической принадлежности серверов.
- Определение номера подсети (ASN) и ее владельца для IP/домена прокси и для SNI.
- Тестирование доступности конфигураций с использованием изменяющейся задержки (имитация "человеческого" поведения).
- Удаление "мертвых" конфигураций из итогового списка по результатам тестирования доступности.
- Удаление конфигураций согласно "черному списку" доменов (параметр
BLACKLIST_DOMAINS). - Автоматическая коррекция конфигураций, в т.ч. замена "мусорных" доменов на корректные, из "белого списка" доменов (параметр
WHITELIST_DOMAINS). - Формирование информативной строки комментария каждой конфигурации в формате: "{country code} | {latency}ms | {domain IP} | {domain AS number} | {domain AS name} || {sni} ({country code} | {sni IP} | {sni AS number} | {sni AS name}) || {current date}".
Кэширование и статистика
- Формирование и работа с локальным файлом кэша (файл
vpn_cache.json) для определения "новизны" загружаемых файлов подписок (файлы, содержимое которых не изменилось с момента последней загрузки, повторно не обрабатываются). - Ведение полного реестра проверяемых конфигураций, и формирование отдельного итогового списка "новых" конфигураций, обработка которых еще ни разу не производилась ранее (файлы с именами в формате new_filtered--YYYY-MM-DD--HH-MM--{number}.txt).
- Автоматическая очистка устаревших записей кэша.
- Создание файла
temp\_live_results.tmp, обновляемого в процессе работы Proxy Filter в режиме реального времени, и содержащего результаты фильтрации на текущий момент, на случай аварийного завершения работы (защита от потери уже обработанных конфигураций). - Формирование итоговых статистических отчетов о состоянии кэша после каждого сеанса работы программы (файлы с именами в формате cache_report_YYYY-MM-DD_HH-MM.csv).
- Все операции записываются в файл
logs\app.log. - Поддерживается ротация логов (максимум 3 файла объемом до 1 МБ).
- Поддержка нескольких режимов DNS запросов: DNS-over-HTTPS, public, local, согласно значению параметров
DNS_MODE,DNS_DOH_URLиDNS_SERVER_IP.
Поддержка работы через локальный системный прокси-сервер (127.0.0.1:{port})
- Параметры локального системного прокси-сервера определяются автоматически, с отображением подтверждающего запроса пользователю перед началом работы скрипта. Работа через локальный прокси-сервер может увеличивать время отклика проверяемых конфигураций.
Подсчет времени выполнения
- В конце работы Proxy Filter подсчитывается общее время обработки.
6. 💡 Инструкция по использованию
1а. Подготовьте файл с URLs подписок:
- Откройте файл
input_urls.txt. - Добавьте ссылки на подписки (строки, начинающиеся с
https://), по одной на строку. - Сохраните файл.
- В файле настроек
config.iniустановите параметрWORK_MODE = d(работа с URLs подписок) иCLEAR_TEMP = 1.
1б. Подготовьте текстовый файл(ы), содержащий строки конфигураций прокси-серверов в поддерживаемых форматах:
- В папке программы
tempсоздайте файлtest.txt(имя может быть любое). - Скопируйте в этот файл строки конфигураций, найденные в сторонних источниках (строки, начинающиеся с
vless://,trojan://и т.д.). - Сохраните файл.
- В файле настроек
config.iniустановите параметрWORK_MODE = n(работа с локальными файлами) иCLEAR_TEMP = 0.
-
Поменяйте другие настройки в файле
config.ini, если необходимо:- Например, можно указать коды стран, для фильтрации итогового списка прокси по географическому признаку, порты, перечни доменов и пр.
- Сохраните файл настроек.
-
Запустите программу:
- Дважды щелкните на
proxy-filter.exe.
- Дважды щелкните на
-
Ожидайте завершения работы:
- После обработки все данные появятся в папке
output.
- После обработки все данные появятся в папке
-
Лог-файл с описанием подробностей работы программы можно найти в папке
logs.
- Конфигурации Hysteria2 и TUIC не проверяются на фактическую доступность, и фильтруются из подписок "как есть". Вместо значения времени задержки в строках комментариев этих конфигураций указано
UDP.
- Если подписки содержат большое количество строк (десятки тысяч), программа может работать более продолжительное время. Это нормально.
Не удаляйте файл кэша без необходимости
- Кэш ускоряет работу Proxy Filter, и экономит ваше время, которое иначе затрачивалось бы на тестирование заведомо неактуальных конфигураций.
- Актуальность кэша поддерживается автоматически.
8. ✉️ Ошибки и обратная связь
Программа поставляется "как есть". Если вы столкнулись с ошибками или необычным поведением:
- Убедитесь, что используете операционную систему Microsoft Windows (текущая версия программы Proxy Filter рассчитана только на эту ОС).
- Проверьте, правильно ли заполнен файл
input_urls.txt. - Проверьте настройки программы в файле
config.ini. - Проверьте локальную доступность для программы гео-баз Maxmind.
- Отключите системный прокси.
- Убедитесь, что программа имеет доступ к сети.
- Проверьте файл
logs/app.logдля получения дополнительной информации.
Если всё равно ничего не получается, вы можете создать новую Issue.
Отзывы, комментарии, предложения, критику и другую обратную связь оставляйте в Discussions.
9. ❌ Заявление об ограничении ответственности
Автор программы приложил максимум усилий для ее стабильной работы. Однако полное отсутствие ошибок не гарантируется.
Друзья, Proxy Filter является некоммерческим проектом. Это означает, что дистрибутив распространяется абсолютно бесплатно, а разработка ведется на энтузиазме автора.
Если вам нравится этот проект, поддержите его звездой!
Ваша поддержка мотивирует и помогает проекту (и автору) развиваться.
Спасибо, что используете Proxy Filter!