FAQ и устранение неполадок
Ответы на частые вопросы и быстрые решения проблем, с которыми пользователи сталкиваются чаще всего.
На HTTPS-сайтах возникают ошибки сертификата
Устройство или инструмент не доверяет корневому сертификату (CA) BlankTrail Proxy. Установите его с помощью кнопки «Корневой сертификат (CA)» в дашборде, затем перезапустите браузер или инструмент. В Windows установщик обычно делает это за вас; на других устройствах сертификат нужно установить вручную.
«Порт уже занят» или ошибка 409
Отказ открыть порт (POST /api/v1/ports/open) приходит с кодом 409 — кроме отладочного порта захвата: его отвергает сам обработчик, ДО менеджера портов, и код там 403. Причин много — читайте текст ответа, он называет причину прямо. Ниже частые; сменой номера порта лечатся только первые две.
| Текст ответа | Что делать |
|---|---|
port N is already open | Этот номер уже открыт В САМОМ приложении. Возьмите другой — или тот, что предлагает дашборд (то же делает GET /api/v1/ports/suggest). |
port N is busy: listen tcp …: bind: … | Номер держит ПОСТОРОННЯЯ программа: слушатель не поднялся, а хвост после «bind:» — дословное сообщение операционной системы. Возьмите другой номер — или тот, что предлагает дашборд (GET /api/v1/ports/suggest). |
serving suspended: license inactive | Лицензия неактивна: подписка кончилась либо сутки не было связи с сервером авторизации. Порт не откроется ни под каким номером — нужно восстановить связь или продлить подписку. |
port limit reached | Исчерпан предел одновременно открытых портов на вашем тарифе. Закройте лишние порты или перейдите на старший тариф. |
the debug fingerprint port requires a Pro license | 🔴 Единственная строка этой таблицы, которая приходит с кодом 403, а не 409: отказ выдаёт обработчик открытия порта, до менеджера портов. Отладочный порт захвата доступен с тарифа Pro. Обычный порт откроется, отладочный — нет. |
Список не исчерпывающий: тем же кодом 409 и сырым текстом менеджера портов приходят и другие отказы — port N is already being opened (этот же номер открывают прямо сейчас), serving suspended during open: license inactive — port not started (лицензия отвалилась посреди открытия), а также отказы перехвата: системный перехват уже занят другим портом, приложение уже перехватывается другим портом.
Порт пропал сам, хотя я его открыл
Порт без трафика закрывается САМ через 30 минут — это общий тайм-аут простоя. Отсчёт начинается с момента открытия, а не с последнего запроса: открыть порт, уйти настраивать свой скрипт и вернуться через час — и порта уже нет, при этом с приложением всё в порядке.
- Отдельному порту можно задать своё время: PUT /api/v1/port/{port}/idle с телом {"seconds": 0} — не закрывать никогда, {"seconds": null} — вернуться к общему тайм-ауту.
- Общий тайм-аут меняется ручкой PUT /api/v1/idle_timeout и в config.yaml ключом portmanager.idle_timeout.
- 🔴 Обращение к ЛЮБОЙ ручке этого порта считается активностью и сбрасывает отсчёт. Мониторинг, дергающий GET /status раз в минуту, не даст порту закрыться никогда — а сценарий, который открывает порт заранее, наоборот, его потеряет.
- Для контейнеров и серверов есть штатное лекарство: список portmanager.startup_ports в config.yaml. Такие порты продукт открывает сам и держит открытыми, а после восстановления связи с сервером авторизации переоткрывает.
Моя лицензия не активируется
Сначала очевидное: email и пароль — от учётной записи blanktrail.com, у машины есть доступ в интернет, а при включённом двухфакторном подтверждении нужно завершить шаг с тикетом.
Лицензия привязана к УСТРОЙСТВУ, и мест у неё ограниченное число. Отсюда несколько разных отказов, у каждого своё лекарство — текст приходит в дашборд, в подсказку трея и в ответ GET /api/v1/license/status.
| Текст отказа | Что случилось и что делать |
|---|---|
device limit reached | Мест лицензии больше нет. Освободите устройство в личном кабинете — обычно это прежняя машина или переустановленная система, которая считается новым устройством. |
another copy of this device is running | Вторая копия того же устройства уже работает: например, клонированная виртуальная машина или запущенный дважды продукт. |
device key mismatch | Установка была переопознана в другом месте. Обычно это перенос состояния между машинами без переноса ключей — активируйте заново. |
device key required — reinstall the client | Ключ устройства потерян: файл состояния повреждён или удалён. Переустановите клиента. |
device deactivated in your account | Устройство отключено в личном кабинете — включите его обратно или освободите место. |
client build is below the minimum allowed | Сборка слишком старая. Обновите клиента — как это сделать, написано в ответе про обновление. |
subscription expired | Подписка кончилась: продлите её в личном кабинете. |
no active license for this account | У учётной записи нет действующей лицензии — вы вошли не в тот аккаунт или лицензия ещё не куплена. |
Проблема сохраняется? Обратитесь в поддержку из своей учётной записи и приложите отчёт: дашборд собирает его сам (кнопка отчёта об ошибке), и в нём уже есть журналы и состояние портов.
Прокси отдаёт 403 на часть сайтов
Если в шапке дашборда под названием тарифа стоит строка «Ограничено доменами: …», у вас сервисный тариф: порт пускает только на перечисленные домены, а на любой другой адрес отвечает 403 Forbidden с пустым телом (по SOCKS5 — «connection not allowed by ruleset», UDP ASSOCIATE не выдаётся вовсе). Это не поломка прокси и не вина вышестоящего выхода — менять апстрим бесполезно. Тот же список приходит полем allowed_domains в ответе GET /api/v1/license/status. Запись без префикса покрывает домен и все его поддомены, запись с «=» в начале — только точное имя, голый IP не совпадает никогда. Нужны другие домены — их меняют в личном кабинете вместе с тарифом.
Забыл пароль от дашборда
Пароль сбрасывается повторной активацией лицензии: откройте на САМОЙ МАШИНЕ адрес /recover, войдите учётной записью blanktrail.com — и там же задайте новый пароль дашборда. Переустанавливать продукт не нужно, состояние сохраняется.
Ключ API паролем дашборда не управляется: он живёт отдельно, и если потерян именно он — его выдаёт GET /api/v1/auth/apikey, а перевыпускает POST /api/v1/auth/apikey/rotate.
Сайт требует пройти проверку — что делать?
Если обычного HTTP-запроса не хватает и сайт показывает заслон, за дело берётся Challenge Breaker: он проходит проверку сам, возвращает готовую сессию на тот же порт, и приложение продолжает работать обычными запросами. Включается для каждого порта в диалоге «Изменить» и требует MITM. Доступен с тарифа Pro; сколько процессов решателя занято, видно на вкладке «Обзор».
Как убедиться, что прокси не даёт утечек?
Перед открытием порта используйте предварительную проверку на утечки в диалоге «Открыть порт» или API /upstream/test с проверкой «leak». Она сравнивает DNS-резолвер с IP-адресом выхода и проверяет наличие обходного маршрута через IPv6, поэтому «протекающий» выход выявляется заранее.
Где найти мой API-ключ?
Откройте дашборд, нажмите на значок шестерёнки, чтобы открыть «Настройки», и скопируйте показанный там API-ключ. Там же его можно перевыпустить, если он мог быть раскрыт. Отправляйте его в заголовке X-API-Key при вызовах API.
Прокси-порт требует логин и пароль
Если в настройках включена авторизация на прокси-портах, адрес в вашем приложении обязан нести учётные данные — иначе соединение отвергается, и выглядит это как «прокси не работает».
# без авторизации
curl -x socks5://127.0.0.1:20134 https://example.com
# с авторизацией на прокси-порте
curl -x socks5://proxyuser:proxypass@127.0.0.1:20134 https://example.com
- В рекомендованной команде запуска Docker пароль прокси ставится ПО УМОЛЧАНИЮ — контейнер отдаёт порты наружу, и открытый прокси без пароля был бы открытым прокси для всей сети.
- Та же оговорка относится к настройке «принимать соединения из локальной сети»: включив её, вы отдаёте порт соседям по сети, и пароль перестаёт быть формальностью.
- Логин и пароль задаются на странице настроек дашборда или ручкой PUT /api/v1/settings/network полями proxy_auth_enabled, proxy_auth_user и proxy_auth_pass. Включить проверку без пары логин-пароль нельзя.
Как обновиться?
Приложение само НАХОДИТ обновление, но не ставит его: когда выходит новая версия, в дашборде появляется полоса «Доступна новая версия» с кнопкой. Пока на неё не нажали, продолжает работать прежняя версия.
После нажатия обновление скачивается, проверяется по подписи и подменяет исполняемый файл, после чего приложение перезапускается само. Лицензия, настройки и пароль сохраняются.
Два состояния, в которых кнопка не сработает и это не поломка. «Нужна ручная установка» — подмена файла на этой машине невозможна (например, приложение лежит там, куда нельзя писать); рядом появляется ссылка на скачивание, и установщик нужно запустить руками. «Обновление не удалось» — рядом стоит кнопка «Повторить». Обычно попытка срывается ДО подмены файла (скачивание, проверка подписи), и тогда прежняя версия на диске не тронута. Реже подмена уже прошла, а перезапуститься не вышло: приложение к этому моменту уже свернуло работу, а на диске лежит НОВАЯ версия — после ручного запуска поедет именно она. Поэтому, увидев это состояние, перезапустите приложение и сверьте версию: в дашборде или через GET /api/v1/update/status (поле current).
В Windows можно вместо этого повторно запустить установщик и выбрать «Обновить — сохранить лицензию, настройки и пароль». В Linux обновления приходят через службу пакетов. Проверить состояние из кода: GET /api/v1/update/status, запустить — POST /api/v1/update.
Как получить помощь?
Войдите в свою учётную запись на blanktrail.com и откройте поддержку (Telegram или веб-чат). Если вы столкнулись с ошибкой в приложении, в диалоге «Настройки» есть пункт «Сообщить об ошибке», который с вашего согласия отправляет нашей команде обезличенный диагностический пакет.