Актуальная версия: 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.
Базовые правила фильтрации:
- Поддерживаемые протоколы: 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(если вам нужны только некоторые конфигурации из подписки, а все остальные не нужны)
- Асинхронная загрузка файлов подписок по 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.
- Параметры локального системного прокси-сервера определяются автоматически, с отображением подтверждающего запроса пользователю перед началом работы скрипта. Работа через локальный прокси-сервер может увеличивать время отклика проверяемых конфигураций.
- В конце работы Proxy Filter подсчитывается общее время обработки.
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, и экономит ваше время, которое иначе затрачивалось бы на тестирование заведомо неактуальных конфигураций.
- Актуальность кэша поддерживается автоматически.
Программа поставляется "как есть". Если вы столкнулись с ошибками или необычным поведением:
- Убедитесь, что используете операционную систему Microsoft Windows (текущая версия программы Proxy Filter рассчитана только на эту ОС).
- Проверьте, правильно ли заполнен файл
input_urls.txt. - Проверьте настройки программы в файле
config.ini. - Проверьте локальную доступность для программы гео-баз Maxmind.
- Отключите системный прокси.
- Убедитесь, что программа имеет доступ к сети.
- Проверьте файл
logs/app.logдля получения дополнительной информации.
Если всё равно ничего не получается, вы можете создать новую Issue.
Отзывы, комментарии, предложения, критику и другую обратную связь оставляйте в Discussions.
Автор программы приложил максимум усилий для ее стабильной работы. Однако полное отсутствие ошибок не гарантируется.
Друзья, Proxy Filter является некоммерческим проектом. Это означает, что дистрибутив распространяется абсолютно бесплатно, а разработка ведется на энтузиазме автора.
Если вам нравится этот проект, поддержите его звездой!
Ваша поддержка мотивирует и помогает проекту (и автору) развиваться.
Спасибо, что используете Proxy Filter!