Skip to content

kort0881/vpn-checker-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

862 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VPN Checker Backend

Сервис для автоматической проверки и агрегации публичных VLESS / VMess / Trojan / Shadowsocks конфигураций с формированием готовых подписок (FAST / ALL / WHITE / BLACK) для клиентов семейства Xray/V2Ray.[web:12]

Функциональность

  • Сбор конфигураций из заранее заданного набора публичных источников (GitHub и произвольные URL).[web:12]
  • Нормализация и дедупликация ключей, ограничение максимального объёма входных данных.[cite:9]
  • Активная проверка доступности узлов (TCP/TLS/WebSocket) с измерением задержки.[cite:9]
  • Классификация по географии: отдельные пулы для России (RU) и Европы (EURO), жёсткий отбор российских выходных узлов.[cite:9]
  • Формирование уровней FAST (топ по задержке) и ALL (все прошедшие проверку).[cite:9]
  • Разделение на WHITE (живые ключи) и BLACK (недоступные при проверке).[cite:9]
  • Аннотация каждой ноды: пинг, страна на русском и флаг, что упрощает фильтрацию в клиентах.[cite:9]
  • Генерация subscriptions_list.txt с HTTP‑ссылками на все итоговые списки для использования как подписок.[cite:9]

Архитектура и пайплайн

  1. Сбор входных данных
    Источники URL заданы в константах URLS_RU и URLS_MY в main.py.[cite:9]
    GitHub‑ссылки автоматически приводятся к raw.githubusercontent.com, содержимое разбирается построчно, отфильтровываются строки с префиксами vless://, vmess://, trojan://, ss://.[cite:9]

  2. Дедупликация и лимит
    Для каждого уникального ключа сохраняется только одна запись; общее количество ограничивается MAX_KEYS_TO_CHECK для предотвращения деградации производительности.[cite:9]

  3. Кэширование результатов
    В файл checked/history.json сохраняется состояние ключей: признак живости, задержка, страна, хост и время проверки.[cite:9]
    При повторных запусках свежие и живые записи (моложе CACHE_HOURS) повторно не проверяются и сразу попадают в результаты.[cite:9]

  4. Проверка доступности
    Для ключей без актуального кэша выполняется:

    • извлечение host:port;
    • быстрый вывод страны (get_country_fast) по домену и маркерам в строке;
    • исключение российских выходов из EURO‑пула (is_russian_exit);
    • попытка установления соединения (TCP/TLS/WebSocket) с измерением RTT в миллисекундах.[cite:9]
      Успешные ключи маркируются как живые, неуспешные — как BLACK‑кандидаты.[cite:9]
  5. Аннотация ключей
    Для живых конфигураций формируется финальная строка вида:
    …#[123ms Германия 🇩🇪 @vlesstrojan]
    с latency, русским названием страны и соответствующим флагом.[cite:9]

  6. Формирование слоёв FAST / ALL

    • Из живых ключей отбрасываются варианты с задержкой выше MAX_PING_MS.[cite:9]
    • Оставшиеся сортируются по задержке.
    • Формируются списки:
      • res_ru_fast / res_euro_fast — топ FAST_LIMIT (FAST‑слой);
      • res_ru_all / res_euro_all — все живые (ALL‑слой).[cite:9]
  7. WHITE / BLACK

    • WHITE: все живые ключи после проверки и фильтрации по задержке:
      • checked/RU_Best/ru_white_all_WHITE.txt;
      • checked/My_Euro/my_euro_all_WHITE.txt.
    • BLACK: все ключи, которые не удалось успешно проверить:
      • checked/RU_Best/ru_white_all_BLACK.txt;
      • checked/My_Euro/my_euro_all_BLACK.txt.[cite:9]
  8. Генерация подписок
    Все результирующие файлы раскладываются по:

    • checked/RU_Best — слои для RU;

    • checked/My_Euro — слои для EURO.[cite:9]
      Затем формируется checked/subscriptions_list.txt со ссылками формата:

    • RUSSIA FAST: ru_white_part1..4.txt

    • RUSSIA ALL: ru_white_all_part*.txt

    • EUROPE FAST: my_euro_part1..3.txt

    • EUROPE ALL: my_euro_all_part*.txt

    • WHITE / BLACK для RU и EURO: *_WHITE.txt, *_BLACK.txt.[cite:9]

    Эти URL можно использовать в клиентах (Xray/V2Ray/Clash и др.) как HTTP‑подписки.[cite:9]

Локальный запуск

git clone https://github.com/kort0881/vpn-checker-backend.git
cd vpn-checker-backend
python main.py

После выполнения скрипта:

  • результаты лежат в checked/RU_Best и checked/My_Euro;
  • файл checked/subscriptions_list.txt содержит готовые HTTP‑ссылки для импорта в клиент.[cite:9]

Автоматическое обновление (GitHub Actions)

Репозиторий содержит workflow, который по расписанию:

  • выполняет python main.py;
  • коммитит изменения в каталоге checked/ обратно в репозиторий.[web:12]

Таким образом, списки подписок поддерживаются в актуальном состоянии без ручного запуска скрипта.[web:12]

About

VPN Checker Backend with auto-cleanup. Automated VPN/proxy validation engine with real-time monitoring, dead key removal, and performance metrics for VLESS, VMess, Trojan protocols

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages