Skip to content

Latest commit

 

History

History
193 lines (132 loc) · 17.2 KB

File metadata and controls

193 lines (132 loc) · 17.2 KB

Proxy Filter for Windows

English version
中文版

Актуальная версия: 2.0.0 Скачайте актуальную версию здесь

Подробности изменений смотрите в CHANGELOG.md


Proxy Filter — комбинированный инструмент для автоматической загрузки, обработки, коррекции, фильтрации, проверки доступности и нарезки конфигураций прокси-серверов из общедоступных подписок (subscriptions).

В качестве входных форматов Proxy Filter поддерживает YAML (json) и XRay (plain text/base64).


1. 📥 Входные данные

Для работы программы требуется один из двух вариантов источников конфигураций прокси-серверов (в зависимости от режима работы, см. далее):

  • файл input_urls.txt, в который необходимо вручную скопировать список URLs подписок (по одному URL на строку).
  • текстовые файлы, содержащие конфигурации прокси-серверов (.txt, .yaml, файлы без расширения и пр.), размещенные в папке temp.

Для примера в файл input_urls.txt уже добавлены несколько URLs подписок. Рекомендуется добавить дополнительные подписки, найденные в сторонних источниках (Telegram, web и др.).

Дополнительно необходимо скачать две базы данных для корректного определения географической принадлежности обрабатываемых конфигураций (для скачивания этих баз данных требуется бесплатная регистрация на сайте Maxmind.com по ссылке https://www.maxmind.com/en/geolite2/signup):

Указанные базы данных рекомендуется регулярно обновлять для получения более релевантных результатов фильтрации.

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, содержащие отфильтрованные конфигурации прокси-серверов.


3. ⚡ Режимы работы Proxy Filter

  • WORK_MODE = d - "DOWNLOAD", загрузка файлов по ссылкам из input_urls.txt (режим работы по-умолчанию).
  • WORK_MODE = n - "NO DOWNLOAD", не загружать файлы, использовать локальные файлы из папки temp (этот режим удобен для фильтрации самостоятельно загруженных/сформированных файлов с конфигурациями).

4. ☝🏻 Режимы фильтрации

  • 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.
  1. Поменяйте другие настройки в файле config.ini, если необходимо:

    • Например, можно указать коды стран, для фильтрации итогового списка прокси по географическому признаку, порты, перечни доменов и пр.
    • Сохраните файл настроек.
  2. Запустите программу:

    • Дважды щелкните на proxy-filter.exe.
  3. Ожидайте завершения работы:

    • После обработки все данные появятся в папке output.
  4. Лог-файл с описанием подробностей работы программы можно найти в папке logs.


7. ⚠️ Особые указания

Проверка доступности

  • Конфигурации Hysteria2 и TUIC не проверяются на фактическую доступность, и фильтруются из подписок "как есть". Вместо значения времени задержки в строках комментариев этих конфигураций указано UDP.

Объем данных

  • Если подписки содержат большое количество строк (десятки тысяч), программа может работать более продолжительное время. Это нормально.

Не удаляйте файл кэша без необходимости

  • Кэш ускоряет работу Proxy Filter, и экономит ваше время, которое иначе затрачивалось бы на тестирование заведомо неактуальных конфигураций.
  • Актуальность кэша поддерживается автоматически.

8. ✉️ Ошибки и обратная связь

Программа поставляется "как есть". Если вы столкнулись с ошибками или необычным поведением:

  • Убедитесь, что используете операционную систему Microsoft Windows (текущая версия программы Proxy Filter рассчитана только на эту ОС).
  • Проверьте, правильно ли заполнен файл input_urls.txt.
  • Проверьте настройки программы в файле config.ini.
  • Проверьте локальную доступность для программы гео-баз Maxmind.
  • Отключите системный прокси.
  • Убедитесь, что программа имеет доступ к сети.
  • Проверьте файл logs/app.log для получения дополнительной информации.

Если всё равно ничего не получается, вы можете создать новую Issue.

Отзывы, комментарии, предложения, критику и другую обратную связь оставляйте в Discussions.


9. ❌ Заявление об ограничении ответственности

Автор программы приложил максимум усилий для ее стабильной работы. Однако полное отсутствие ошибок не гарантируется.


10. ☕️ Поддержка проекта

Друзья, Proxy Filter является некоммерческим проектом. Это означает, что дистрибутив распространяется абсолютно бесплатно, а разработка ведется на энтузиазме автора.

Если вам нравится этот проект, поддержите его звездой!

Ваша поддержка мотивирует и помогает проекту (и автору) развиваться.

Спасибо, что используете Proxy Filter!