Что отвалится у вашего сайта, если завтра отключат иностранные сервисы. Проверил 50 сайтов

Мне стало интересно, насколько российские сайты в 2026 году ещё зависят от зарубежных сервисов. Не в смысле «пользуется ли компания Zoom», а буквально: что сломается у сайта, если завтра иностранный провайдер отключит российских клиентов. Вручную такое проверять долго, поэтому я написал для этого открытую утилиту и прогнал через неё 50 сайтов: банки, магазины, операторов связи, авиакомпании, доставку, онлайн‑школы и несколько госсайтов. Спойлер: серверы почти все уже перевезли, а вот «мелочи» вроде сертификатов, аналитики и шрифтов остались.
Зачем это вообще проверять
Последние годы показали, что иностранный сервис может отвалиться в любой момент. В 2022 году регистратор Namecheap перестал обслуживать клиентов из России. Иностранные удостоверяющие центры отзывали сертификаты у российских организаций. YouTube в России сильно замедлен, и встроенное видео на сайте у многих посетителей просто не грузится.
Есть и юридическая сторона. С 1 марта 2023 года о трансграничной передаче персональных данных нужно заранее уведомлять Роскомнадзор. А любой Google Analytics, Google Fonts или reCAPTCHA на сайте отправляет IP‑адрес посетителя на зарубежные серверы. Многие владельцы сайтов об этом даже не задумываются: подключили счётчик пять лет назад и забыли.
Отсюда вопрос: как быстро понять, что из всего этого касается конкретного сайта? Готового бесплатного инструмента я не нашёл и решил сделать свой.
Что получилось на 50 сайтах
Я взял 50 сайтов крупных российских компаний и госорганов и проверил каждый в браузерном режиме: главную страницу и ещё несколько внутренних (контакты, доставка, оплата и так далее). Названия компаний из выборки приводить не буду: проверка автоматическая и может ошибаться, а цель не в том, чтобы кого‑то пристыдить. Примеры в репозитории сделаны на нескольких известных сайтах, это демонстрация, а не результаты исследования.
За каждую найденную иностранную зависимость утилита снимает баллы и ставит оценку от A до F. Распределение получилось такое:
Оценка | Сайтов |
|---|---|
A | 19 |
B | 19 |
C | 5 |
D | 6 |
F | 1 |
Сертификаты. Иностранный SSL‑сертификат у 43 сайтов из 50. Чаще всего это бельгийский GlobalSign (29 сайтов) и американский Let's Encrypt (12). Сертификат российского НУЦ Минцифры стоит только у 4 сайтов. Это самая массовая зависимость, но и самая вынужденная: сертификату НУЦ не доверяют Chrome, Firefox и Safari, так что совсем без иностранного центра сайт у большинства посетителей откроется с ошибкой. Поэтому важно не избавиться от него, а быть готовым быстро сменить. Главный риск тут даже не отзыв, а отказ в продлении: сертификат Let's Encrypt живёт 90 дней, и если выпуск настроен вручную, сайт перестанет открываться, как только срок закончится.
Аналитика и реклама. Иностранные счётчики стоят у 17 сайтов, и почти всегда это Google Analytics или Google Tag Manager (16 сайтов). Самое забавное: у 9 сайтов на страницах до сих пор есть скрипты Google Ads и AdSense, хотя Google прекратил показ рекламы в России ещё в 2022 году. Скорее всего, их просто забыли убрать.
Шрифты, капча, видео. Google Fonts грузится у 8 сайтов, Google reCAPTCHA стоит у 4, встроенный YouTube — у 3. Каждый такой скрипт передаёт данные посетителя за рубеж.
Почта и DNS. Почта у иностранного провайдера у 11 сайтов, из них у пяти Google Workspace. DNS у зарубежных провайдеров у 8.
Хостинг. А вот здесь почти полный порядок: сервер за рубежом нашёлся только у одного сайта из 50. Сайты за CDN вроде Cloudflare утилита считает отдельно: в этом случае настоящий сервер скрыт, и иностранным оказывается CDN, а не хостинг.
Конструкторы. 4 сайта из выборки сделаны на Tilda. Её создала российская команда, но сеть, на которой работают сайты, зарегистрирована на компанию в ОАЭ.
Ещё интересная цифра: у 17 сайтов нет никаких иностранных зависимостей, кроме сертификата. То есть крупный бизнес серьёзную инфраструктуру уже перевёз, а остались мелочи, которые проще всего упустить. И как раз эти мелочи отвечают за передачу данных посетителей за рубеж.
Как устроен инструмент
Утилита называется Suveren, она написана на Python и лежит на GitHub под лицензией MIT. Расскажу про несколько вещей, которые оказались интереснее, чем я думал.
Страна сервиса — это не страна дата‑центра
Первое, что пришлось решить: что считать «иностранным». Сервер Hetzner может стоять в Финляндии, но компания немецкая, а санкции применяются к компании, а не к стойке в дата‑центре. Поэтому страной сервиса я считаю юрисдикцию владельца.
Чтобы узнать, кому принадлежит IP‑адрес, не нужны никакие ключи API. Есть бесплатный сервис Team Cymru, который отвечает прямо через DNS. Переворачиваешь IP задом наперёд и делаешь TXT‑запрос:
$ dig +short TXT 8.8.8.8.origin.asn.cymru.com.
"15169 | 8.8.8.0/24 | US | arin | 2023-12-28"(У адреса 8.8.8.8 перевёрнутая запись совпадает с прямой, поэтому пример такой удобный.)
В ответе номер автономной системы (сети) и страна. Вторым запросом по номеру сети получаем название владельца. Дальше уже дело базы.
База сервисов
Сейчас в базе около 200 сервисов, иностранных и российских. Каждый описывается одной записью: по каким следам его узнать. Например:
Service(
"Hetzner",
"DE", # страна компании
ns=("hetzner.com",), # так выглядят его DNS-серверы
mx=("your-server.de",), # так выглядят его почтовые серверы
asn=(24940,), # номер его сети
)Для скриптов на странице задаются регулярные выражения: mc.yandex.ru — это Яндекс Метрика, googletagmanager.com — Google Analytics и так далее. Российские сервисы тоже есть в базе, чтобы в отчёте была полная картина, а не только «плохое».
Сайты, которые не хотят, чтобы их проверяли
Первая версия просто скачивала главную страницу и искала на ней всё нужное. На маленьких сайтах это работало, а на крупных утилита радостно сообщала, что у сайта нет политики конфиденциальности. Это была неправда: крупные сайты либо отдают роботу страницу «подтвердите, что вы не робот», либо пустую заготовку, которую потом достраивает JavaScript.
Пришлось сделать две вещи. Во‑первых, научить утилиту распознавать такие заглушки и честно писать «не удалось проверить» вместо ложной ошибки. Во‑вторых, добавить режим, в котором сайт открывается в настоящем браузере через Playwright. Отдельно скачивать браузер не нужно: используется Edge или Chrome, которые уже стоят в системе.
Браузерный режим неожиданно оказался намного полезнее, чем я ожидал. Он видит все запросы, которые делает страница, включая скрипты, подгруженные через менеджеры тегов. Например, у одного крупного онлайн‑кинотеатра так нашёлся пиксель TikTok, которого в исходном HTML нет вообще.
Санкционные списки и транслитерация
Утилита умеет проверять и компании: по ИНН берёт данные из ЕГРЮЛ и ищет компанию и её руководителя в санкционных списках США, ЕС и Великобритании. Все три списка открытые.
С ИНН всё просто: во многих записях он указан, и совпадение точное. А вот с названиями пришлось повозиться. В российском реестре компания называется «ПАО „СБЕРБАНК РОССИИ“», а в американском списке «Public Joint Stock Company Sberbank of Russia». Я сделал нормализацию: транслитерация, выкидывание организационно‑правовых форм и сравнение по «скелету» слова из первой буквы и согласных. Так эти два названия сходятся.
Для людей тот же приём сработал плохо. При тестах «Любимов Олег» совпал с «Любимовой Ольгой» из санкционного списка: без гласных окончания и пол теряются. Для ФИО пришлось сделать отдельное, более строгое сравнение, а все совпадения по имени утилита помечает как «возможные»: однофамильцев никто не отменял.
Как одно регулярное выражение повесило проверку
Эту историю хочется рассказать отдельно. Когда я запустил проверку 50 сайтов, через 10 минут было готово только 6. При этом по отдельности каждый сайт проверялся секунд за тридцать.
Сначала я думал на сеть, потом на браузер. Оказалось, ни то ни другое. В базе было несколько шаблонов вот такого вида:
r"[\w.-]*adriver\.ru"Выглядит безобидно. Но если на странице есть длинная строка без пробелов (а в минифицированном JavaScript таких полно), регулярка начинает перебор с каждой позиции и работает квадратично. Я замерил: на строке в 20 тысяч символов один такой шаблон думал 2 секунды, на строке в 200 тысяч — уже минуты. И всё это время программа стояла, потому что вычисление блокировало весь цикл событий.
Исправление оказалось смешным: убрать ведущий [\w.-]* и искать просто adriver\.ru. Результат тот же, а работает мгновенно. Плюс я добавил тест, который прогоняет все шаблоны базы по строке из 100 тысяч символов и падает, если это занимает больше секунды. После этого 50 сайтов проверились за 5 минут вместо часа с лишним.
Что ещё умеет
Коротко, чтобы не превращать статью в документацию:
проверка по 152-ФЗ: политика конфиденциальности, согласие в формах, уведомление о cookies, трансграничная передача, где хранятся данные; у каждого вывода указана статья закона со ссылкой на текст;
проверка по реестру блокировок Роскомнадзора;
проверка компании по ИНН: ЕГРЮЛ, реестр операторов персональных данных, санкционные списки;
массовая проверка списка сайтов со сводной таблицей и CSV (это для веб‑студий);
сравнение двух проверок, чтобы видеть, как идёт переезд на российские сервисы.


Ограничения
Хочу сразу честно сказать, чего утилита не умеет:
проверяется главная страница и несколько внутренних, а не весь сайт;
часть сайтов закрыта от ботов даже для браузера, тогда в отчёте будет «не проверено»;
проверка по 152-ФЗ идёт по признакам на страницах и не заменяет юриста;
совпадения по названию и ФИО в санкционных списках нужно перепроверять руками.
Попробовать
Код открытый: https://github.com/marsilid/suveren
Для Windows есть готовый Suveren.exe в разделе Releases: скачать и запустить двойным кликом, откроется меню. Exe собирается автоматически в GitHub Actions из исходников репозитория, так что его можно проверить. Windows может показать предупреждение SmartScreen: файл не подписан. На других системах:
pip install "suveren[browser] @ git+https://github.com/marsilid/suveren.git"
suveren scan example.ru --browserЕсли утилита не узнала какой‑то сервис на вашем сайте, откройте issue “Добавить сервис” на GitHub. Там простая форма, программировать не нужно. Буду рад любым замечаниям в комментариях, особенно от тех, кто разбирается в 152-ФЗ лучше меня.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.