ИИ-сервис не работает из России: диагностика
Коротко
«Перестало работать» — это три разные поломки, и лечатся они по-разному. Первая: вас режут на периметре, до приложения запрос не доходит — в браузере страница-заглушка Cloudflare с Ray ID и кодом вида 1009 или 1020, в консоли пусто. Вторая: аккаунт ограничен или ключ отозван — сеть проходит, приложение отвечает, но отдаёт JSON с authentication_error или permission_error, и ломается одинаково с любого IP и устройства. Третья: не прошли деньги — интерфейс жив, ломается только генерация, приходит billing_error или отказ карты.
Порядок проверки на десять минут: статус-страница провайдера → один curl с выводом заголовков → повтор с другой сети и с другого устройства → почта (включая спам) и страница биллинга. Первая же развилка — HTML-заглушка или JSON-ошибка — отсекает половину вариантов.
Главная ошибка: сразу начать перебирать VPN-серверы. При бане аккаунта и при отказе платежа это не помогает, а лишних сигналов вашему аккаунту добавляет.
Зачем отличать три ситуации
Потому что действия противоположные. При гео-блокировке помогает смена канала и не помогает ничего другого. При ограничении аккаунта смена канала не даёт ничего — вы всё равно приходите под тем же логином и тем же ключом, а частая смена гео у одного аккаунта выглядит хуже, чем стабильная. При отказе платежа бесполезно и то и другое: нужно менять способ оплаты.
Различить их можно по одному признаку — кто с вами разговаривает.
- Периметр (CDN, WAF, DNS) — отвечает HTML-страницей. Никакого JSON, никакого
request_id, зато есть Ray ID и номер ошибки. Список этих кодов Cloudflare держит открытым: 1009 — «Access Denied: Country or region banned», 1005 — бан целой автономной системы, то есть провайдера или хостера целиком. - Приложение — отвечает JSON по документированной схеме ошибок: объект
errorс полямиtypeиmessageплюсrequest_id. Если вы видите такой ответ, сеть до сервиса дошла, и дело не в стране. - Биллинг — отвечает отдельным кодом: у Claude API это
402 billing_error, «There's an issue with your billing or payment information».
Дальше — конкретные шаги.
Диагностика целиком: десять минут по шагам
Шаг 0. Статус-страница, 30 секунд. У Anthropic это status.claude.com с разбивкой по компонентам: claude.ai, Console, API, Claude Code — то есть можно увидеть, что API живой, а веб-интерфейс нет. У OpenAI — status.openai.com. Если там инцидент, дальше можно не копать: ждать. На статус-страницу подписываются на уведомления (почта, вебхук, RSS) — один раз настроили, дальше не гадаете.
Шаг 1. Один запрос с выводом заголовков. Для API это выглядит так:
curl -sS -D - -o /dev/null https://api.anthropic.com/v1/messages \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'
Ключ намеренно не передаём. Здоровый ответ на такой запрос — 401 с JSON и request_id: это значит, что до сервиса вы дошли и он с вами разговаривает. Если вместо этого приходит HTML с Ray ID или соединение вообще не устанавливается — вы упёрлись в периметр. Кстати, что Cloudflare стоит перед api.anthropic.com, написано в самой документации: ошибку про размер запроса он возвращает «before the request reaches the API servers».
Для веб-интерфейса тот же шаг — открыть DevTools, вкладку Network, перезагрузить страницу и посмотреть на первый неудачный запрос: код ответа и тело.
Шаг 2. Второй канал. Повторите ровно то же самое с мобильного интернета (не с того же роутера), а потом — с другого устройства и в режиме инкогнито. Это разводит сеть и аккаунт:
| Со своей сети | С другой сети | Вывод |
|---|---|---|
| Не работает | Работает | Блокировка по IP/провайдеру или локальный DNS |
| Не работает | Не работает, но под другим аккаунтом работает | Проблема в аккаунте |
| Не работает | Не работает ни под каким аккаунтом | Сбой сервиса или блокировка целой подсети |
| Работает в инкогнито | — | Расширение, куки или кэш |
Шаг 3. Почта и биллинг. Провайдеры о санкциях к аккаунту пишут письмом, и оно регулярно улетает в спам. Параллельно откройте страницу баланса: у Anthropic предоплаченные кредиты просто заканчиваются, и это выглядит как «внезапно перестало работать».
Шаг 4. Сохраните request_id. Это единственное, с чем поддержка может что-то сделать: заголовок request-id есть в каждом ответе API и дублируется в теле ошибки. Обращение без него обрабатывается дольше и часто заканчивается шаблонной отпиской.
Разбор по частям: что означает каждый признак
| Что видите | Слой | Что это | Что делать |
|---|---|---|---|
| HTML, Ray ID, ошибка 1009/1005 | Периметр | Гео- или ASN-блокировка | Менять канал доступа |
| Таймаут, соединение не встаёт | Сеть | DNS, провайдер, фильтрация | Проверить DNS, мобильную сеть |
401 authentication_error |
Приложение | Ключ отозван, истёк или неверен | Выпустить новый ключ |
403 permission_error |
Приложение | Нет прав на ресурс, вопрос к настройкам организации | Проверить workspace и роль |
402 billing_error |
Биллинг | Проблема с оплатой или балансом | Пополнить, сменить карту |
429 rate_limit_error |
Лимиты | Упёрлись в rate limit | Снизить темп, ретраи с backoff |
529 overloaded_error |
Провайдер | Перегрузка на стороне сервиса | Повторить позже |
| Логин проходит, но всё пусто | Аккаунт | Ограничение аккаунта | Читать почту, писать в поддержку |
Три уточнения, которые экономят время.
Гео. Отсутствие страны в списке поддерживаемых — это не «баг», а условие обслуживания. Anthropic держит список поддерживаемых стран отдельным документом, России в нём нет, и условия использования прямо ссылаются на него: пользоваться сервисом можно «only in compliance with our Terms, including ... the policy governing the countries and regions Anthropic currently supports». Из этого следует неприятное: восстановления «как было» тут не бывает, бывает смена способа доступа. Что реально работает без обходных путей, разобрано в тексте про нейросети без VPN в России, а по конкретно Claude — в доступе к Claude API из России.
Аккаунт. Здесь важен один диагностический факт: при ограничении аккаунта поломка едет за вами. Другой браузер, другой IP, другое устройство — тот же результат. Если хоть где-то работает, дело не в аккаунте.
Деньги. Отказ карты — не сбой сервиса. У Stripe есть открытый справочник кодов отказа, и там видно, что отказ бывает двух происхождений: от банка-эмитента (do_not_honor — «declined for an unknown reason», разбираться с банком) и от самого Stripe (generic_decline может означать блокировку правилами Radar). Отдельный случай — authentication_required: нужен 3-D Secure, который на карте иностранного посредника часто просто некому подтвердить. Российская карта в большинстве зарубежных ИИ-сервисов не проходит вовсе, и это ожидаемое поведение, а не поломка.
Чего делать не надо
Перебирать VPN-серверы по кругу. Если ответ приходит от приложения (JSON с type), смена IP не меняет ничего — вы приходите под тем же аккаунтом.
Заводить второй аккаунт на тот же e-mail, телефон или карту. Так вы связываете новый аккаунт со старым.
Отдавать логин или ключ «человеку, который починит». Это отдельный пункт условий: «You may not share your Account login information, Anthropic API key, or Account credentials with anyone else». Санкция за это — не предупреждение, а прекращение доступа. Про то, как ключи вообще устроены и почему их нельзя пересылать в мессенджере, есть отдельный разбор.
Ставить «расширение-разблокировщик» из поиска. Расширение получает доступ к содержимому страниц, включая ваши сессии.
Писать в поддержку «у меня не работает». Без request_id, точного времени и кода ответа тикет уходит в шаблонный ответ.
Заливать чужие персональные данные в первый попавшийся доступный сервис, пока чините основной. Аварийная замена — самый частый момент, когда данные клиентов уезжают туда, куда не следовало; ограничения описаны в материале про ИИ и 152-ФЗ.
Как держать доступ живым
Доступ ломается не в удобное время, поэтому имеет смысл заранее:
- подписаться на статус-страницы тех сервисов, на которых у вас что-то стоит;
- держать запасного провайдера с уже выпущенным ключом — для агентных редакторов это решается списком бесплатных LLM-провайдеров для Cline и Roo Code, для инференса — вариантами вроде Groq с его лимитами;
- не держать весь бюджет на одном балансе;
- логировать
request_idи код ответа в своём коде — иначе через неделю вы не докажете, что именно сломалось; - раз в месяц проверять, что запасной путь ещё живой: ключи протухают, тарифы меняются, страны из списков пропадают.
Честное ограничение: эта диагностика говорит, что именно сломалось, но не гарантирует, что это чинится. Гео-блокировка и бан аккаунта — решения провайдера, и в обоих случаях вы упираетесь в его правила, а не в свои настройки. Ценность в другом: вы перестаёте тратить вечер на лечение не той болезни.
Частые вопросы
Как отличить бан аккаунта от блокировки по IP за одну минуту?
Откройте сервис в режиме инкогнито с мобильного интернета под другим аккаунтом. Работает — значит, канал в порядке и дело в вашем аккаунте. Не работает ни под каким аккаунтом — дело в канале или в самом сервисе. Для API тот же тест делается запросом без ключа: JSON-ошибка означает, что сеть дошла.
Пришло письмо об ограничении аккаунта. Поможет ли смена VPN?
Нет. Ограничение висит на аккаунте, а не на адресе. Смена IP после письма только добавляет несоответствий в историю входов. Единственный рабочий путь — обращение в поддержку с деталями, и приготовьтесь к тому, что решение может быть отрицательным и без объяснений: условия позволяют приостановить доступ «at any time without notice».
Сервис работал, а после оплаты перестал. Что это?
Скорее всего, платёж прошёл частично или был отменён после проверки. Смотрите две вещи: код ошибки от API (402 billing_error указывает именно на биллинг) и статус транзакции в личном кабинете и у банка. Если платёж отбил эмитент — вопрос к банку, а не к сервису.
Ошибка 429 — это блокировка?
Нет, это rate limit: «Your account has hit a rate limit». Лечится темпом запросов и повторами с экспоненциальной задержкой — официальные SDK делают это сами, по умолчанию два раза, с учётом заголовка retry-after. Соседний код 529 означает перегрузку сервиса и к вашему аккаунту отношения не имеет.
Что приложить к обращению в поддержку?
request_id из ответа (или Ray ID, если ответил периметр), точное время с часовым поясом, код ответа, полный текст ошибки и что вы уже проверили: другую сеть, другое устройство, другой аккаунт. Скриншот без этих данных бесполезен.