Скрипт check_leaks.py проверяет список хостов (ищет совпадения) целевой подписки на предмет утечек (host:port) в общедоступных списках.
🔧 Что есть в репозитории:
check_leaks.py— основной скрипт,scripts/install_and_run.sh— автоматический bash-скрипт,.github/workflows/check-leaks.yml— workflow, который запускается каждый час,requirements.txt— зависимости,list.txt— ваш файл со списком общедоступных подписок/хостов (не перезаписывается).
В репозитории есть скрипт scripts/install_and_run.sh, который автоматически:
- клонирует или обновляет репозиторий в
/opt/host-leak-checker, - проверяет наличие
python3иpython3-venv(устанавливает в случае необходимости), - создает виртуальное окружение
.venvи устанавливает зависимости, - попросит ввести ссылку на подписку и запустит
check_leaks.py.
bash <(curl -Ls https://raw.githubusercontent.com/Border-VPN/host-leak-checker/main/scripts/install_and_run.sh)Примечания:
- Требуются
bash,sudo,curl(альтернатива сwget:bash <(wget -qO- <URL>)),python.
-
Перейдите в
/opt/, клонируйте репозиторий и перейдите в директориюcd /opt && git clone https://github.com/Border-VPN/host-leak-checker.git && cd host-leak-checker
-
Установите зависимости:
pip install -r requirements.txt
-
Локальный запуск (без инсталлятора)
Локально укажите URL подписки и файл списка как позиционные аргументы:
python check_leaks.py "<SUB_URL>" list.txt
- В CI (рекомендуется для приватных репозиториев) задайте секрет
SUBSCRIPTION_URLв настройках репозитория (Settings → Secrets). Workflow передаст его как первый позиционный аргумент. - Workflow использует
secrets.SUBSCRIPTION_URLи запускаетpython check_leaks.py "$SUBSCRIPTION_URL" list.txt --create-issue
leak_report.json— подробный JSON.leak_report.md— Markdown отчет.
Если Вы хотите, чтобы workflow автоматически создавал issue при обнаружении утечек, то укажите переменную GITHUB_TOKEN (обычно доступен автоматически).
Если нужен отдельный бот-токен с другими правами, добавьте secrets.REPO_TOKEN и передавайте его в переменную GITHUB_TOKEN через настройки Actions.
list.txtможет содержать либо готовыеhost:portстроки, либо список URL-адресов на публичные подписки. В последнем случае скрипт попытается получить и декодировать содержимое.- Скрипт возвращает ненулевой код только при неожиданных ошибках (например, сетевой сбой). Наличие утечек само по себе — нормальная ситуация и рассматривается как успешное выполнение.