Мощный, многопоточный чекер прокси V2Ray/Xray
Быстро. Жестко. Эффективно. - все как я люблю.
MK_XRAYchecker — Утилита на Python для массовой проверки доступности и задержки V2Ray/Xray прокси. Скрипт парсит конфиги из файлов или URL (Например GitHub Raw), декодирует Base64 (и другие форматы), создает временные конфиги и проверяет их через реальное ядро Xray или Mihomo.
Отдельно добавлен MTProto checker для Telegram proxy (tg://proxy, t.me/proxy) с собственной логикой проверки через Telegram API. Он не использует Xray/Mihomo и работает как отдельный режим.
- Поддержка протоколов:
VMess,VLESS,Trojan,Shadowsocks,Hysteria2. - Отдельный MTProto checker: проверка Telegram proxy (
tg://proxy,t.me/proxy) через реальный MTProto handshake и Telegram RPC probe. - Парсинг: Извлекает прокси из "каши" текста, Base64 строк, ссылок-подписок.
- Подписки: Поддерживает URL-подписки в формате ссылок и
Clash/MihomoYAML (proxies:), включая Base64-обёртку.- (Ну, то есть скрипту практически похуй в каком виде ты скормишь ему ссылки.)
- Batch Mode: 1 ядро = 1 пачка прокси (для
xrayвнутри пачки проверки идут параллельно). UP TO 1337 BATCHES. - Режимы работы: Красивое меню или CLI аргументы.
- Двухуровневое меню: Отдельные разделы
Проверка / Настройки / Сервиси компактный status-блок с текущими параметрами. - Сортировка: Автоматически сортирует рабочие прокси по пингу или скорости.
- Отсев по ping: Можно задать порог
max_ping_ms(например500) и автоматически выкидывать медленные прокси. - SpeedTest: Проверка скорости скачивания (опционально).
- Rich UI: Ну всякие загрузочки менюшечки красивые.
- Конфиг: Гибкий конфиг, с множеством параметров.
- Debug artifacts: При падении ядра сохраняет
batch*.jsonи лог в./failed_batches+ печатает команду воспроизведения. - Self-test URL: Быстрый тест парсинга (чинит кейсы
&,&%3B,%26amp%3B). - Безопаснее SS: фильтрует Shadowsocks-ссылки с неподдерживаемыми шифрами (AEAD-only whitelist), чтобы не ловить
Exit: 23. - Более строгий REALITY: валидирует
pbk(base64url → строго 32 байта) и нормализуетsid(shortId hex). - Self-Update: умеет обновлять
v2rayChecker.py,updater.py,aggregator.pyи MTProto-модули из GitHub репозитория (staged.new+update.pending+ перезапуск). - Auto-install core: умеет автоматически ставить
xrayилиmihomo(поpreferred_core) в./bin. - Свитч ядра: переключение
auto/xray/mihomoчерез CLI (--engine) или через интерактивное меню. - MTProto в отдельном режиме: свой output-файл, свой timeout/threads/max ping, свой пункт в меню.
Скрипт может проверять обновления на старте и подтягивать свежие python-файлы из GitHub Releases (fallback на raw VERSION).
- При наличии апдейта скачиваются обновлённые файлы и сохраняются как
*.new, создаётсяupdate.pending, затем скрипт перезапускается. - На следующем запуске
apply_pending_update_if_any()применяет staged обновления (замена файлов +.bak). - Updater отслеживает
v2rayChecker.py,updater.py,xray_installer.py,requirements.txt, а такжеaggregator.pyи MTProto-модули, если они есть в репозитории. - После staged-обновления выполняется smoke-check: компиляция, импорт модулей и проверка доступности
Telethonдля MTProto режима.
- CLI:
--no-update(полностью пропустить проверку). - Конфиг:
autoupdate:true— обновляется автоматически без вопросов.false— если версия устарела, спросит подтверждение.
Для работы скрипта нужно одно из ядер:
xray/xray.exemihomo/mihomo.exe
По умолчанию включена автоустановка: если ядра нет — скрипт попытается скачать архив из релизов и распаковать в ./bin.
- Выбери релизы нужного ядра:
👉 Xray-core releases
👉 Mihomo releases - Скачай архив под свою ОС/архитектуру.
- Распакуй и положи бинарник рядом со скриптом или в
./bin(xray.exe/mihomo.exe).
📂 Рекомендуемая структура:
v2rayChecker.pyupdater.py(для self-update)xray_installer.py(для автоустановки ядра)bin/xray.exeилиbin/xraybin/mihomo.exeилиbin/mihomoaggregator.py(опционально, для--agg)
git clone https://github.com/MKultra6969/MK_XRAYchecker
cd MK_XRAYcheckerpip install -r requirements.txtИнтерактивный режим (Меню):
python v2rayChecker.pyCLI (примеры):
# Проверка из файла
python v2rayChecker.py -f "proxies.txt"
# Проверка по ссылке-подписке
python v2rayChecker.py -u "https://example.com/sub"
# Указать количество потоков и таймаут
python v2rayChecker.py -f "list.txt" -T 50 -t 2
# MTProto checker по файлу
python v2rayChecker.py --mtproto -f "mtproto.txt"
# MTProto checker по прямой ссылке
python v2rayChecker.py --mtproto -u "tg://proxy?server=1.2.3.4&port=443&secret=0123456789abcdef0123456789abcdef"
# Проверка именно живых MTProto proxy без ping-фильтра
python v2rayChecker.py --mtproto -f "mtproto.txt" --max-ping 0
# Запустить без проверки обновлений
python v2rayChecker.py --no-updateКлючи добавляются автоматически при первом запуске (или при появлении новых полей).
autoupdate:true/false— автообновление скрипта.repo_owner,repo_name,repo_branch— откуда подтягивать апдейты (GitHub).autoinstall_xray:true|false— автоустановка ядра при отсутствии.xray_version:"latest"или конкретный тег (например"v1.8.10").autoinstall_mihomo:true|false— автоустановкаmihomoпри отсутствии.mihomo_version:"latest"или конкретный тег.preferred_core:"auto"/"xray"/"mihomo"— режим выбора ядра.router_mode:true/false— безопасный режим для роутеров/OpenWRT.core_cleanup_mode:"owned"/"all"/"none"— политика очистки старых процессов ядра.max_ping_ms: порог ping в миллисекундах для отсева (0= отключено).core_path: путь к ядру (напримерxray,bin/xray,bin/mihomo).agg_countries: список ISO2-кодов стран для предфильтра агрегатора (например["RU","DE","GB"]).mtproto: отдельный блок настроек Telegram proxy checker:enabled: включен ли MTProto режим.api_id,api_hash: Telegram API credentials для Telethon.threads: число параллельных MTProto проверок.timeout: таймаут MTProto probe в секундах.max_ping_ms: отдельный ping-порог для MTProto.dc_probe_limit: сколько лучших Telegram DC пробовать для одного MTProto proxy.crypto_backend: режим crypto backend для MTProto:auto/safe/unsafe.output_file: отдельный output-файл, напримерsortedMtproto.txt.
⚠️ api_idиapi_hashлежат вconfig.jsonв открытом виде.
Проверка, что URL-парсер корректно обрабатывает HTML/URL-экранирование в параметрах (security/pbk/sid/flow/...), плюс self-test MTProto parser.
python v2rayChecker.py --self-testРежим для отладки: 1 прокси на batch и 1 поток, чтобы быстро находить “плохие” ссылки/конфиги.
python v2rayChecker.py -f "proxies.txt" --debugЕсли ядро не запустилось, скрипт сохранит файлы в ./failed_batches и покажет команду воспроизведения для текущего ядра.
MTProto checker работает отдельно от Xray/Mihomo:
- принимает только
tg://proxy?...иt.me/proxy?...; - использует
Telethonи Telegram API credentials изconfig.json; - поддерживает обычные MTProxy secrets,
dd-варианты иee/FakeTLS; - автоматически ранжирует несколько Telegram DC по месту запуска checker и пробует лучшие из них;
- для
standard/ddперебирает несколько MTProto transport-режимов, а дляeeиспользует отдельный FakeTLS backend; - сортирует результаты только по ping;
- не делает speed-test;
- показывает отдельные статусы
LIVE / CONN / DROP / UNREACH / FAIL; - пишет результат в отдельный файл (
sortedMtproto.txtпо умолчанию).
Грубая интерпретация статусов:
LIVE: proxy прошёл MTProto connect и Telegram RPC probe.CONN: proxy принял MTProto connect, но не довёл до успешного Telegram RPC.DROP: proxy живой, но отфильтрован поmax_ping_ms.UNREACH: до proxy не удалось поднять даже сырой TCP connect с текущей машины.FAIL: proxy не прошёл connect / handshake / probe.
Для проверки именно живых MTProto proxy, а не только быстрых, ставь MTProto ping = 0 или --max-ping 0. Если укажешь --speed или --sort speed вместе с --mtproto, режим будет принудительно возвращён к ping-сортировке с предупреждением.
Пример блока в config.json:
"mtproto": {
"enabled": true,
"api_id": 123456,
"api_hash": "your_api_hash",
"threads": 20,
"timeout": 5,
"max_ping_ms": 1500,
"dc_probe_limit": 3,
"crypto_backend": "auto",
"output_file": "sortedMtproto.txt"
}| Аргумент | Описание |
|---|---|
-m, --menu |
Принудительный запуск интерактивного меню |
-f, --file |
Путь к .txt/.json с прокси или со списком URL-подписок |
-u, --url |
URL ссылка на подписку или список (v1.1.3) |
--agg |
Запустить встроенный агрегатор (граббер) прокси |
--mtproto |
Запустить отдельный checker MTProto proxy (tg://proxy, t.me/proxy) |
--mtproto-crypto |
Принудительный выбор MTProto crypto backend: auto / safe / unsafe |
--agg-cats |
Категории источников для агрегатора (например: 1 2) |
--agg-filter |
Фильтр агрегатора по ключевым словам (например: vless reality) |
--agg-country |
Фильтр агрегатора по странам ISO2 (например: RU DE GB) (v1.1.4) |
-o, --output |
Файл для сохранения результатов. Для MTProto по дефолту: sortedMtproto.txt |
-T, --threads |
Лимит одновременно запущенных ядер или MTProto-воркеров |
-t, --timeout |
Таймаут ожидания ответа в секундах |
-l, --lport |
Стартовый локальный порт для ядер (по дефолту: 1080) |
-c, --core |
Путь к исполняемому файлу ядра (xray/v2ray/mihomo) |
--engine |
Режим выбора ядра: auto / xray / mihomo |
--router-mode |
Безопасный режим роутера (не убивать чужие процессы ядер) (v1.1.4) |
--cleanup-mode |
Очистка старых процессов: owned / all / none (v1.1.4) |
-d, --domain |
Тестовый домен для проверки подключения (по дефолту: Google/CF generate_204) |
--max-ping |
Отсев по ping (мс), 0 = отключить (для MTProto использует его отдельный блок) |
-n, --number |
Ограничить количество проверяемых прокси (взять первые N) |
--reuse |
Перепроверить файл результатов (sortedProxy.txt) |
-s, --shuffle |
Перемешать список перед проверкой |
--t2exec |
Время ожидания запуска ядра в секундах |
--t2kill |
Задержка после убийства процесса ядра |
--speed |
Включить тест скорости скачивания (вместо только пинга) |
--sort |
Метод сортировки результатов: ping или speed |
--speed-url |
Ссылка на файл для теста скорости |
--self-test |
Запустить самопроверку URL парсинга (v1.0.3) |
--debug |
Debug режим (1 proxy/batch, 1 thread) (v1.0.3) |
--no-update |
Пропустить проверку самообновления на старте (v1.1.0) |
В планах допилить следующий функционал:
- ВОЗМОЖНО телеграм бот.
Ваш покорный: MKultra69
Веб: mk69.su
FELIX: Оригинал aggregator.py + хороший фидбек
Проект КАК ВСЕГДА распространяется под лицензией WTFPL (Do What The Fuck You Want To Public License).
