- Python 74.7%
- HTML 14.4%
- Shell 5.7%
- Batchfile 4.5%
- Dockerfile 0.7%
| .github/workflows | ||
| configs | ||
| lib | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .nojekyll | ||
| docker-compose.yml | ||
| Dockerfile | ||
| index.html | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| run_check.bat | ||
| run_check.sh | ||
| vless_checker.py | ||
XRayCheck
Автоматически обновляемая коллекция публичных VPN-конфигов: (VLESS, VMess, Trojan, Shadowsocks)
⚠️ Для успешного добавления/обновления подписки в условиях CIDR-ограничений необходимо использовать ссылку с использованием зеркала (кнопка копирования рядом с текстом Mirror на сайте)
⚠️ Показатели доступности и перечень рабочих конфигов могут быть разными в зависимости от региона использования
⚠️ Перед началом использования необходимо каждый раз производить проверку доступности средствами VPN-клиента
| Исходный код |
VPN-клиенты
Ссылки на подписки можно найти на сайте
Добавление подписок в vpn-клиенты осуществляется через нажатие на + и выбор пункта "импорт из буфера обмена"
| Android | Windows | Apple |
|---|---|---|
| Exclave | v2RayTun | v2RayTun |
| v2rayTun | Throne | V2Box |
| Happ | Happ | Happ |
📊 Статистика репозитория
| Показатель | Значение |
|---|---|
| Просмотры (14Д) | 44 |
| Уникальные посетители (14Д) | 18 |
| Клоны (14Д) | 369 |
| Уникальные клоны (14Д) | 176 |
| Звёзды | 0 |
| Форки | 0 |
Техническая информация
Поддерживаемые протоколы: VLESS, VMess, Trojan, Shadowsocks
Скрипт загружает список прокси-ключей по URL и выполняет end-to-end проверку каждого ключа:
- Запускает локальный прокси (xray) с этим ключом (SOCKS на 127.0.0.1).
- Делает HTTP(S)-запрос к тестовому URL через прокси.
- По ответу (статус, время, при необходимости несколько URL и повторные запросы) ключ считается рабочим или мёртвым.
Рабочие ключи сохраняются в директории configs/ без расширения: available, available(top100). При запуске через Docker — configs/white-list_available, configs/white-list_available(top100). Ссылки на скачивание с GitHub Pages: https://whiteprime.github.io/xraycheck/configs/... (то же имя файла без расширения).
Требования
- Python 3.8+
- Xray-core - при первом запуске, если xray не найден в PATH и не задан
XRAY_PATH, скрипт автоматически скачает нужную сборку с GitHub Releases в папкуxray_distрядом со скриптом. Ручная установка не обязательна.
Установка
pip install -r requirements.txt
Режимы работы
- single - проверка ключей из одной ссылки (аргумент командной строки или
DEFAULT_LIST_URL). - merge - объединение ключей из нескольких ссылок и проверка одной группы. Ссылки задаются в файле
links.txt(по одной URL на строку). Имя файла задаётся в.envпеременнойLINKS_FILE.
Режимы проверки ключей
- Обычный (
STRONG_STYLE_TEST=false) - несколько тестовых URL (HTTP и/или HTTPS), повторные запросы, проверки стабильности. Настраивается черезTEST_URLS,TEST_URLS_HTTPS,MIN_SUCCESSFUL_URLS,REQUIRE_HTTPS,STABILITY_CHECKSи др. - Строгий (
STRONG_STYLE_TEST=true) - один тестовый URLhttps://www.gstatic.com/generate_204, один или два запроса подряд, без повторов. Ключ считается рабочим только при ответе 204, пустом теле и времени ответа не болееSTRONG_MAX_RESPONSE_TIMEсекунд. Результаты ближе к поведению мобильных клиентов.
Полный список переменных - в .env.example.
Локальный запуск
Запуск
Список по умолчанию (режим single):
python vless_checker.py
Свой URL списка (режим single):
python vless_checker.py "https://example.com/my-vless-list.txt"
Режим merge: положите ссылки в links.txt, в .env задайте MODE=merge:
# В links.txt по одной URL на строку, например:
# https://example.com/list1.txt
# https://example.com/list2.txt
python vless_checker.py
Запуск через скрипты (рекомендуется)
Для удобства запуска доступны интерактивные скрипты, которые предлагают выбор между обычной проверкой и проверкой в Docker, а также автоматически проверяют и устанавливают зависимости.
Windows: bat-скрипт (самый простой способ)
Для Windows доступен нативный bat-скрипт run_check.bat с интерактивным меню:
- Дважды кликните на
run_check.batв проводнике Windows, или - Запустите из командной строки или PowerShell:
run_check.bat
Особенности:
- Интерактивное меню с выбором стрелками ↑↓ и подтверждением Enter
- Центрированное отображение меню в консоли
- Цветная подсветка выбранного пункта
- Автоматическая проверка и установка зависимостей Python
Использование:
- Используйте стрелки ↑↓ для навигации по меню
- Нажмите Enter для выбора пункта
- Нажмите Escape для выхода
С передачей аргументов (например, URL списка):
run_check.bat "https://example.com/my-list.txt"
Примечание: Скрипт использует встроенный PowerShell для интерактивного меню. Убедитесь, что PowerShell доступен в вашей системе (обычно установлен по умолчанию в Windows 10/11).
Linux/macOS: bash скрипт
Для Linux и macOS используйте bash скрипт run_check.sh с интерактивным меню:
chmod +x run_check.sh
./run_check.sh
Особенности:
- Интерактивное меню с выбором стрелками ↑↓ и подтверждением Enter
- Центрированное отображение меню в терминале
- Цветная подсветка выбранного пункта
- Автоматическая проверка и установка зависимостей Python
Использование:
- Используйте стрелки ↑↓ для навигации по меню
- Нажмите Enter для выбора пункта
- Нажмите Escape или 'q' для выхода
С передачей аргументов (например, URL списка):
./run_check.sh "https://example.com/my-list.txt"
Настройки (файл .env)
Параметры задаются в .env в каталоге проекта (или через переменные окружения). Шаблон со всеми опциями - .env.example.
| Переменная | Описание |
|---|---|
MODE |
Режим: single или merge |
LINKS_FILE |
Файл со ссылками при MODE=merge (по одной URL на строку) |
DEFAULT_LIST_URL |
URL списка по умолчанию (при MODE=single) |
OUTPUT_FILE |
Базовое имя файла для рабочих ключей (без расширения: available) |
OUTPUT_DIR |
Директория для результатов (configs) |
TEST_URL, TEST_URLS |
URL для проверки (HTTP); при нескольких - через запятую |
TEST_URLS_HTTPS |
HTTPS URL (например https://www.gstatic.com/generate_204) |
REQUIRE_HTTPS |
Требовать успешный HTTPS для признания ключа рабочим |
STRONG_STYLE_TEST |
Строгий режим: один URL, 1-2 запроса, лимит по времени (true/false) |
STRONG_STYLE_TIMEOUT |
Таймаут одного запроса в строгом режиме, сек. |
STRONG_MAX_RESPONSE_TIME |
В строгом режиме макс. время ответа, сек. (медленнее - мёртвый) |
STRONG_DOUBLE_CHECK |
В строгом режиме делать два запроса, оба должны успешно пройти |
CONNECT_TIMEOUT |
Таймаут запроса через прокси, сек. |
MAX_RESPONSE_TIME |
Макс. допустимое время ответа, сек. (0 = не ограничивать) |
MAX_WORKERS |
Число потоков (параллельных проверок) |
BASE_PORT |
Начальный порт для SOCKS (порты BASE_PORT ... BASE_PORT+MAX_WORKERS-1) |
XRAY_STARTUP_WAIT |
Ожидание старта xray, сек. |
XRAY_STARTUP_POLL_INTERVAL |
Интервал опроса процесса xray, сек. |
XRAY_PATH |
Путь к xray (пусто = поиск в PATH и автоустановка) |
XRAY_DIR_NAME |
Папка для скачанного xray |
VERIFY_HTTPS_SSL |
Проверять SSL при HTTPS-запросах через прокси (false типично для SOCKS) |
DEBUG_FIRST_FAIL |
Вывод отладки при первой неудаче (true/false) |
Остальные параметры (повторы, стабильность, геолокация, строгий режим проверки всех URL и т.д.) описаны в .env.example.
Docker: эмуляция ограничения по CIDR whitelist
В контейнере исходящий доступ ограничен только подсетями из CIDR whitelist.
- Сборка и запуск:
docker compose up --build(илиdocker compose run --rm vless-checker) - Результат: файл с рабочими ключами создаётся в
configs/на хосте (volume.:/app) - Свой URL списка:
docker compose run --rm vless-checker "https://example.com/keys.txt" - Режим merge: положите
links.txtв каталог проекта (volume.:/app), задайте в.envMODE=mergeи запуститеdocker compose run --rm vless-checker - Требуется
cap_add: NET_ADMINдля iptables внутри контейнера
Github Action
GitHub Actions: ежедневное обновление available
В репозитории настроен workflow Daily VLESS check (.github/workflows/daily-check.yml):
- Расписание: три раза в день в 7:10 | 14:10 | 19:10 MSK (cron).
- Действия: запуск
vless_checker.pyв режимеmerge(списки изlinks.txt), результат пишется вconfigs/availableиconfigs/available(top100); копии в корень для GitHub Pages; при изменении — коммит и push. - Ручной запуск: вкладка Actions → «Daily VLESS check» → Run workflow.
Чтобы не публиковать links.txt в репозитории: файл links.txt уже попадает под маску *.txt в .gitignore. В CI он создаётся из секрета. Добавьте в репозитории Settings → Secrets and variables → Actions секрет с именем LINKS_FILE_CONTENT и значением - содержимое вашего links.txt (по одной URL на строку). Workflow перед запуском проверки запишет этот секрет во временный links.txt. Если секрет не задан, шаг «Create links.txt from secret» завершится с ошибкой. Если links.txt уже был закоммичен ранее, удалите его из истории и добавьте секрет: git rm --cached links.txt и коммит.