No description
  • C++ 95.3%
  • CMake 4.7%
Find a file
mamutrahal269 b2cc7c243a minor update
2026-04-30 09:58:08 +07:00
include patches 2026-04-11 13:35:24 +07:00
src minor update 2026-04-30 09:58:08 +07:00
submodules patches 2026-04-11 13:35:24 +07:00
.clang-format New: 2026-02-10 09:54:17 +07:00
.gitignore minor update 2026-04-30 09:58:08 +07:00
.gitmodules submodule toml++ 2026-02-13 20:19:12 +07:00
CMakeLists.txt minor update 2026-04-30 09:58:08 +07:00
LICENSE Add GNU AGPL v3 license 2026-02-11 09:30:13 +07:00
README.md minor update 2026-04-30 09:58:08 +07:00
v2sort_example.toml minor update 2026-04-30 09:58:08 +07:00

v2sort - высокопроизводительный прокси чекер и сортировщик

Warning

Проект в активной доработке, возможна нестабильность. Сообщайте об этом в issues или делайте pull запросы с исправлениями

Возможности:

  1. Поддержка протоколов xray-core
    • shadowsocks
    • vless
    • socks(4, 4a, 5)
    • vmess
    • trojan
    • http
    • hysteria2
  2. Гибкая конфигурация и настройка вывода
  3. Автоматическое параллельное тестирование огромных массивов прокси конфигов через xray-core
  4. Автоисправление конфигураций, не принятых xray, чтобы не браковать весь батч
  5. Отлично подходит для автоматизации
  6. Возможность использовать локальную базу mmdb в качестве провайдера геоданных(только на POSIX)

Требования:

  • компьютер на GNU/Linux x86_64
  • интернет

сборки под windows скоро будут

Флаги CLI:

  • -l, --list

    • Источники прокси конфигураций. Могут быть как ссылкой на интернет-ресурсы или же локальными файлами. Примеры: https://example.com/proxies, file:///home/user/proxy.txt, C:\proxy.txt. Несколько источников указываются через пробел
  • -h, --help

    • Вывести краткую справку о программе
  • -c, --config

    • Путь к файлу конфигурации. Обязателен
  • -j, --jobs

    • Количество рабочих потоков. Максимальное число зависит от конфигурации вашей ОС. Устанавливайте разумное значение, иначе программа может упереться в лимит открытых ресурсов(ulimit -n на linux), что приведет в ошибочным результатам тестирования
  • -p, --port

    • Начальный порт для локального SOCKS5 прокси
  • -w, --wait

    • Время ожидания инициализации xray, указывается в миллисекундах(1000 мс = 1 с)
  • -T, --timeout

    • Таймаут при обращении к интернет-ресурсам, в секундах
  • -s, --style

    • Стиль написания отчетов
    • Допустимые значения
      • human
      • raw
      • json
    • По умолчанию установлен raw
  • -o, --output

    • Файл для сохранения отчетов. Данные будут дописываться в конце файла. По умолчанию пишется в консоль
  • -b, --bad

    • Файл сохранения нерабочих/неисправных прокси. Данные будут дописываться в конце файла
  • -R, --regex

    • Регулярное выражение для извлечения прокси URL. PCRE синтаксис
  • -X, --xrays

    • Количество параллельно запущенных процессов xray
  • -P, --proxy_per_xray

    • Количество прокси на 1 процесс xray
  • -n, --min_successful

    • Минимальное количество успешных URL тестов
    • Автоматически уменьшается, если требуемое количество больше количества заданных URL
  • -F, --fragment

    • Отвечает за форматирование фрагмента(то есть имени, которое будет отображаться в вашем GUI клиенте). Можно включать данные тестирования
      • %url%
      • %ip%
      • %country%
      • %city%
      • %region%
      • %speed%
      • %speed_kib%
      • %date%
  • -C, --xray_conf

    • Сохранить конфигурации xray в указанный файл без запуска сетевых тестов
    • Для каждой пачки конфигураций будет использоваться числовой префикс. Для первой пачки это 0
  • -g, --geo_service

    • Сервис получения геоданных

    • Допустимые значения

      • mmdb
      • ipinfo
      • cdn_cgi
    • Если флаг указан без значения, по умолчанию ipinfo

    • При указании mmdb IP будет узнаваться с помощью /cdn-cgi/trace

  • -m, --mmdb

    • Путь к файлу mmdb. Обязателен при --geo_service mmdb
  • -v, --verbose

    • Включить подробные логи
  • -r, --random

    • Использовать 1 случайный URL из settings.urls. Используется для быстрого тестирования
  • -4, --ipv4_only

    • Использовать только ipv4
  • -6, --ipv6_only

    • Использовать только ipv6
  • -S, --speedtest

    • Запускать тесты скорости
  • --trunc_report

    • Усекать файл отчетов(указанный в --output)
  • --trunc_bad

    • Усекать файл плохих прокси(указанный в --bad)

Конфигурация

xray.path - путь к исполнимому файлу xray-core

xray.stdout - файл для перенаправления стандартного потока вывода xray

xray.stderr - файл для перенаправления стандартного потока ошибок xray

xray.log.access - путь к файлу логов доступа xray. По умолчанию stdout

xray.log.error - путь к файлу логов ошибок xray. По умолчанию stdout

xray.log.log_level - уровень логирования xray. Допустимые значения: "debug" | "info" | "warning" | "error" | "none". По умолчанию "warning"

xray.log.dns_log - включить логирование DNS-запросов через xray. По умолчанию false

xray.log.mask_address - маскировка IP-адресов в логах. Допустимые значения: "quarter" | "half" | "full"

settings.urls - список URL-адресов для тестирования производительности прокси

settings.speedtest_url - URL для замера скорости загрузки

settings.min_speed - минимальная скорость конфига(в байтах)

settings.cdn_cgi_host - URL для /cdn-cgi/trace. Путь указывать не нужно, только схему и хост. По умолчанию https://www.cloudflare.com

settings.user_agent - User-Agent заголовок, отправляемый при загрузке списков прокси по HTTP. Полезно для подписочных серверов, требующих конкретный идентификатор клиента. По умолчанию "Happ/3.18.1"

settings.protocols.whitelist - режим работы фильтра протоколов. Если true - разрешены только протоколы из списка, если false - запрещены только протоколы из списка

settings.protocols.list - список протоколов для фильтрации. Регистронезависимо

settings.countries.whitelist - режим работы фильтра стран. Логика аналогична settings.protocols.whitelist

settings.countries.list - список ISO-кодов стран для фильтрации. Регистронезависимо. Пример: ["RU", "CN", "DE"]

settings.ips.whitelist - режим работы фильтра IP-адресов. Логика аналогична settings.protocols.whitelist

settings.ips.list - список IP-адресов для фильтрации. Пример: ["123.456.789", "101.112.131"]

Полный пример конфигурации в файле v2sort_example.toml

Использование

Скачать последний релиз
v2sort -c .v2sort -l https://example.com/proxies /home/user/proxy.txt -j 150 -p 10809 -w 1000 -T 5 -s raw -P 150 -X 5 -o result.txt -R '(?:^|\s)([a-zA-Z][a-zA-Z0-9+.-]*)://([^\r\n]+)'
  • -j 150 -P 150 -X 5 - 150 потоков, 150 прокси на 1 xray и 5 процессов xray (подбирайте под лимиты вашей системы)
  • -w 1000 - ждать 1 секунду после запуска xray перед тестированием
  • -l принимает несколько источников через пробел - URL и локальные файлы одновременно

Сборка

Зависимости:

  • cmake >= 3.18
  • Boost (json, url, filesystem, thread, log)
  • libcurl
  • ICU (uc, i18n, data)
  • OpenMP
  • xray-core (runtime, не требуется для сборки)
  • libmaxminddb (опционально, только POSIX-совместимые включают поддержку mmdb)

CLI11 и toml++ подтягиваются как submodules, поэтому клонировать нужно с --recurse-submodules:

git clone --recurse-submodules https://github.com/mamutrahal269/v2sort.git
cd v2sort
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

Бинарник окажется в build/v2sort.

Лицензия

AGPL-3.0