QR-код или ссылка не импортируются в sing-box: полная диагностика формата
Пошаговая диагностика ошибок импорта QR-кода и ссылок в sing-box: проверка формата профиля, JSON, route, DNS, TUN, VLESS и transport. Найдите причину и устраните её.
Содержание
Импорт профиля через QR-код или ссылку — один из самых удобных способов настроить sing-box. Однако часто при попытке добавить конфигурацию пользователь получает ошибку: «неверный формат», «не удалось импортировать» или просто ничего не происходит. В этой статье мы разберём по шагам, как диагностировать проблему и что проверять в зависимости от источника — клиент, core, сеть или сервер.
Основные причины ошибок импорта
Ошибки импорта можно разделить на четыре группы: неправильная URL-схема, повреждённый QR-код, невалидный JSON-профиль и несовместимость параметров. Частая ошибка — попытка импортировать ссылку от V2Ray или Clash в клиент sing-box, который ожидает определённый формат. Например, sing-box поддерживает схемы vless://, vmess://, trojan://, shadowsocks://, но не все подтипы. Необходимо также учитывать, что многие клиенты добавляют к ссылке дополнительные параметры, такие как #name для комментария, и если они закодированы неправильно, импорт не сработает.
Шаг 1. Проверяем ссылку и QR-код
Первым делом удостоверьтесь, что вы используете корректный формат ссылки. Возьмите исходную строку и раскодируйте её. Для этого можно воспользоваться онлайн-декодером Base64 или локальной командой echo '...' | base64 -d. Проверьте, нет ли лишних пробелов, символов перевода строки или невидимых символов. QR-код должен считываться полностью — иногда камера телефона обрезает часть кода. Убедитесь, что изображение чёткое и не повреждено. Если ссылка содержит символы, которые конфликтуют с URL-кодированием, замените их на %XX.
Шаг 2. Проверяем JSON-структуру профиля
Если импортируется файл конфигурации (например, через URL на GitHub), то это должен быть валидный JSON. Стандартный конфигурационный файл sing-box содержит секции log, inbounds, outbounds, route, dns, experimental. Проверьте структуру на соответствие официальной документации. Частые ошибки: пропущенная запятая между полями, лишняя запятая в конце массива, неверные кавычки (например, одинарные вместо двойных), или использование комментариев //, которые не поддерживаются. Для проверки используйте JSON-валидатор (например, jsonlint.com). Также обратите внимание на версию формата: некоторые поля устарели, и sing-box 1.11 может требовать новые имена.
Шаг 3. Диагностика route и DNS
Неправильная конфигурация маршрутизации или DNS может привести к тому, что импортированный профиль не будет работать, хотя формально импорт прошёл успешно. Проверьте, что в разделе route корректно заданы правила rules, типы action (например, route, hijack-dns, reject). Также убедитесь, что dns настроен верно: указаны серверы, fallback, strategy. Часто ошибки возникают из-за использования неподдерживаемых типов геоданных или отсутствия файлов geoip/geosite. В этом случае sing-box может выдать предупреждение при запуске, но импорт может завершиться ошибкой.
Шаг 4. Проверка TUN и transport
TUN-режим требует наличия прав администратора (или root на Android) и корректной настройки auto_route, strict_route, stack. Если импортируемая ссылка содержит параметры транспорта (например, network=ws для VLESS), убедитесь, что все поля заполнены: host, path, headers. Некорректно закодированные параметры в query-строке часто приводят к ошибке импорта. Например, ?type=ws&path=%2F&host=example.com должно быть правильно URL-закодировано. Некоторые клиенты автоматически добавляют эти параметры, но если ссылка содержит их уже, они должны быть корректными.
Шаг 5. Клиент, core, сеть и сервер
Если импорт прошёл, но соединение не устанавливается, проблема может быть на другом уровне. Проверьте логи клиента (GUI) — он может блокировать подозрительные ссылки или требовать подтверждения для каждого домена. Затем проверьте работу core (sing-box): запустите его вручную с флагом -D и смотрите вывод. Сетевая блокировка (например, через фаервол) также может помешать, особенно если сервер использует нестандартный порт. И наконец, убедитесь, что сам сервер работает и выгружает конфигурацию, соответствующую ссылке. Протестируйте сервер через другой клиент (например, официальный) или командой curl.
Частые сценарии и их решения
- Ошибка «Invalid URL» — проверьте схему ссылки; возможно, используется не поддерживаемый протокол.
- Ошибка «JSON parse error» — исправьте структуру конфигурационного файла.
- QR-код не считывается — очистите камеру, увеличьте контрастность, попробуйте другой сканер.
- После импорта профиль появляется, но не активен — проверьте настройки входа (inbounds), локальный порт.
- Импорт на iOS в приложении sing-box требует ручного добавления через URL-схему; убедитесь, что вы скопировали ссылку полностью.
Заключение
Диагностика импорта — это процесс исключения. Начните с формата ссылки, затем проверьте JSON, затем параметры маршрутизации и транспорта, и наконец окружение. Если проблема остаётся, обратитесь к актуальной официальной документации sing-box и проанализируйте логи. Помните: для каждого клиента могут быть свои особенности, но общая методология поиска причин одинакова.
Проверено на практике
- Дата проверки: 2025-03-20
- Среда: Операционные системы: Windows 11, Android 14, iOS 17; приложение: sing-box 1.11.0
- Версии: [object Object]
Мини-чеклист
- Проверьте, что ссылка начинается с vless://, vmess://, trojan:// или shadowsocks://
- Раскодируйте Base64-часть ссылки и проверьте параметры
- Убедитесь, что QR-код считывается целиком
- Проверьте JSON-файл на валидность через онлайн-валидатор
- Сверьте структуру route и dns с официальным шаблоном
- Проверьте настройки TUN и транспорта на сервере и клиенте
- Запустите sing-box вручную и просмотрите логи
Частые ошибки
- Импорт ссылки от V2Ray или Clash в sing-box
- Использование одинарных кавычек в JSON
- Отсутствие параметра type в VLESS transport
- Несоответствие версии sing-box и формата конфигурации
- QR-код обрезан из-за маленького размера
Источники и документация
FAQ
Что делать, если import не работает на iOS?
Проверьте, что вы используете официальное приложение sing-box и скопировали ссылку целиком. Иногда нужно разрешить «Читать с экрана» из другого источника.
Почему после импорта профиль не подключается?
Убедитесь, что сервер работает, а на клиенте нет блокировки домена. Проверьте логи core.
Как правильно закодировать параметры транспорта в ссылке?
Используйте URL-кодирование: замените пробелы на %20, # на %23 и т.д. Проверьте, что query-строка корректна.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ