- C++ 95.3%
- CMake 4.7%
| include | ||
| src | ||
| submodules | ||
| .clang-format | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| LICENSE | ||
| README.md | ||
| v2sort_example.toml | ||
v2sort - высокопроизводительный прокси чекер и сортировщик
Warning
Проект в активной доработке, возможна нестабильность. Сообщайте об этом в issues или делайте pull запросы с исправлениями
Возможности:
- Поддержка протоколов xray-core
- shadowsocks
- vless
- socks(4, 4a, 5)
- vmess
- trojan
- http
- hysteria2
- Гибкая конфигурация и настройка вывода
- Автоматическое параллельное тестирование огромных массивов прокси конфигов через xray-core
- Автоисправление конфигураций, не принятых xray, чтобы не браковать весь батч
- Отлично подходит для автоматизации
- Возможность использовать локальную базу 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%
- Отвечает за форматирование фрагмента(то есть имени, которое будет отображаться в вашем GUI клиенте). Можно включать данные тестирования
-
-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