«Ошибка обновления» — расплывчатая формулировка, натянутая как минимум на полдюжины разных неисправностей: до ссылки не достучаться; достучались, но пусто; достучались, но содержимое как в прошлый раз; клиент рапортует об успехе, а узлы исчезли все до одного. Порядок проверок важнее самих проверок. Сделайте сначала то, что одним движением убирает половину вариантов.
Первый разрез: вставьте ссылку в браузер
- Найдите профиль в клиенте, откройте его редактирование или подробности и скопируйте адрес подписки ровно в том виде, в каком он есть.
- Перейдите в окно браузера, вставьте адрес в адресную строку, нажмите ввод.
- Браузер начинает скачивать файл или вываливает на страницу простыню YAML — ссылка и сеть в порядке, неисправность на стороне клиента.
- Браузер висит и отваливается по таймауту, сообщает об ошибке DNS или возвращает страницу с ошибкой — дело в сети или в самой ссылке, и сколько ни щёлкай внутри клиента, это не сдвинется.
Браузер тоже не открывает: сначала разомкните круг
Обычная причина в том, что сам домен подписки доступен только через прокси, а рабочего прокси у вас именно сейчас нет. В клиентах есть переключатель в духе «обновлять через прокси» или «использовать системный прокси при обновлении» — в Verge Rev он живёт в панели редактирования профиля, в других клиентах называется иначе. Включите его, и клиент заберёт новую подписку через узел, который ещё работает. Если такой узел ещё остался.
Когда полегли все узлы, дорога закрыта и остаётся ручная первая помощь: попробовать запасной домен, если провайдер его публикует, или взять в кабинете одиночную ссылку на узел и импортировать её руками. Сначала выйти в сеть, потом вернуться к обновлению подписки.
Браузер скачивает, клиент нет
- User-Agent. Часть провайдеров решает по UA, что отдавать, и клиент, чей UA не в их списке, получает пустоту или прямой 403. Некоторые клиенты позволяют задать свой UA — обычно в расширенной части настроек профиля. Браузер тянет, клиент получает пусто: почти всегда это оно.
- Ошибка сертификата или сорванное TLS-рукопожатие. Первый подозреваемый — системные часы: пары минут расхождения хватает, чтобы проверка не прошла. Второй — защитное ПО, вскрывающее TLS, либо корпоративный корневой сертификат.
- Клиент сам идёт через прокси, а выбранный сейчас узел до домена провайдера не добивается. Выключите «обновлять через прокси» и попробуйте снова — проверьте оба положения.
- Ошибка записи. Каталог профилей только для чтения или заблокирован защитным ПО, поэтому содержимое приходит, но не сохраняется. В логе будет сказано, что сбой на записи файла, а не на загрузке.
Пишет, что успешно, а результат неправильный
- Узлы пропали все, остались один-два со странными именами. Как правило, аккаунт истёк или трафик выбран, и провайдер возвращает пустую конфигурацию с уведомлением. С точки зрения клиента обновление прошло безупречно. Смотрите дату окончания и цифры трафика на карточке.
- Содержимое ровно такое же, как было, хотя провайдер объявил о новых узлах. Кеш CDN. Подождите четверть часа и потяните снова либо повесьте на хвост адреса бессмысленный параметр, чтобы проскочить мимо кеша.
- Обычный 404. Провайдер сменил домен, старая ссылка мертва. Скопируйте свежую в личном кабинете, вместо того чтобы возиться со старой.
curl -A "clash-verge/2.0" -I "https://sub.example.com/link?token=YOURTOKEN"
curl -A "clash-verge/2.0" -sS "https://sub.example.com/link?token=YOURTOKEN&t=1738400000"
Первая строка забирает только заголовки, так что видно, 200 там или 403, 404, 302. Многие провайдеры отдают ещё и заголовок subscription-userinfo с сырыми числами по израсходованному трафику и сроку — им доверия больше, чем тому, что рисует интерфейс. Вторая строка тянет тело ответа и заодно показывает трюк с кешем: провайдер игнорирует хвостовой параметр t=, а CDN нет, поэтому новое число означает новый запрос. Поменяйте строку после -A на другой UA — и станет понятно, различает провайдер клиентов или нет.
Какой интервал автообновления разумен
Ручное обновление уходит за данными в момент нажатия. Автоматическое работает в фоне по интервалу, и при неудаче обычно оставляет одну строку в логе, ничего не сообщая на экране. Интервал в несколько минут не даёт ничего: списки узлов не меняются так часто, а многие провайдеры ограничивают частоту запросов, так что в ответ на напор приходят ошибки, а не узлы. Неделя — перекос в другую сторону: провайдер ротирует узлы, а вы сидите на старом наборе. Большинству хватает раза в сутки или раза в двое суток, а когда новые узлы нужны прямо сейчас, щёлкнуть быстрее, чем править настройку.
provider, subscription, update и имя самого профиля. Стоящий рядом код состояния HTTP означает, что дело на сетевом уровне. Слова yaml или parse означают, что содержимое пришло, но это не то содержимое — обычно страница с ошибкой или блок base64 вместо конфигурации Clash.