Skip to main content

Suveren

Проверка сайта и компании для работы в России
иностранные сервисы · 152-ФЗ · блокировки · защита почты · безопасность · ЕГРЮЛ и санкции

CI Python License

English version

Укажите адрес сайта, и через минуту у вас будет отчёт: что на сайте держится на иностранных сервисах, какие требования закона нарушены и какой штраф за это грозит, можно ли подделать письмо от имени компании и что исправить в первую очередь. Каждый вывод подкреплён доказательством: DNS-записью, заголовком ответа, цитатой из политики, адресом скрипта.

Suveren в основном смотрит то же, что любой посетитель: публичные DNS-записи, открытые реестры и страницы сайта. Никакого сканирования портов, подбора паролей и поиска открытых .git или .env. Что именно каждая проверка делает с сайтом и чем рискуете вы, сказано ниже.

Suveren в терминале

На картинках — выдуманные сайты в зарезервированной зоне .test: это данные настоящих проверок, в которых имена, адреса и IP заменены, чтобы не показывать чужие компании.

Что проверяет

Вопрос Что смотрится
🌍 Что отвалится при следующей волне санкций? DNS, почта, хостинг, CDN, конструктор сайта, регистратор, SSL-сертификат, скрипты и виджеты. Оценка независимости от A до F и план переезда на российские сервисы
⚖️ Соблюдает ли сайт 152-ФЗ? политика и её содержание, согласия в формах, cookies, трансграничная передача, хранение данных в России, реестр операторов ПДн, вход через Google и Apple, рекомендательные технологии. Сумма возможных штрафов по КоАП
🚫 Открывается ли сайт в России? домен и IP-адреса в выгрузке реестра блокировок Роскомнадзора (её публикует antifilter.download, не РКН), заблокированные сервисы на страницах
✉️ Можно ли подделать письмо от имени компании? SPF, DMARC, DKIM и длина его ключа, MTA-STS и простой ответ: да, частично или нет
🔓 Нет ли забытых поддоменов, которые можно захватить? поддомены из журналов сертификатов, ведущие на удалённые проекты в чужих сервисах
🛡️ Чей код выполняется на сайте? сторонние и брошенные скрипты, уязвимые версии библиотек, ключи в коде, CSP, HSTS, cookies, TLS, CAA и DNSSEC
🏢 С кем мы имеем дело? компания в ЕГРЮЛ, санкционные списки США (SDN), ЕС и Великобритании, дополнительно ООН и OFAC вне SDN, перечень Росфинмониторинга, реестр операторов ПДн

Всего около 70 проверок и база из 300 с лишним сервисов, у каждой постоянный ID — их список в docs/checks.md. Находки из разных разделов собираются в сценарии атак: например, «почту можно подделать» + «на сайте есть оплата» = фишинг от имени компании.

Кому пригодится: владельцам бизнеса и ИТ-директорам, веб-студиям для аудита сайтов клиентов, юристам и ответственным за персональные данные, отделам закупок для проверки контрагентов.

Что Suveren делает с сайтом

У каждой проверки две метки (они есть в docs/checks.md и в suveren checks ID): что она делает с сайтом и чем рискует тот, кто её запускает.

Запуск С сайтом Для вас
suveren company по ИНН или ОГРН не обращается: только ЕГРЮЛ, реестр операторов ПДн РКН и санкционные списки сайт вас не видит
scan --profile quick только смотрит: главная страница и DNS сайт видит ваш IP, как при обычном заходе
scan (по умолчанию) смотрит главную и до 6 внутренних страниц, файл MTA-STS. Прощупывает в двух местах: пробует соединиться по устаревшим TLS 1.0 и 1.1 и открывает страницы поддоменов, которые ведут на внешние сервисы или на адреса облаков сайт видит ваш IP; такие соединения могут попасть в журналы его защиты
--browser, --cutoff, --profile deep то же, но страницы открывает браузер выполняется JavaScript сайта в браузере на вашем компьютере. Браузеру закрыты адреса вашей сети и загрузка файлов, но скрипты работают как у посетителя
--own-site (после suveren verify) прощупывает свой сайт: служебные файлы .git и .env, слабые шифры TLS, STARTTLS почтовых серверов только для сайта, владение которым подтверждено TXT-записью или файлом; в пакетной проверке нет
--own-site --form-leaks вводит тестовые данные в формы и не отправляет их выполняется JavaScript сайта. Без подтверждения владения не запускается
--plugin файл.py что делает плагин код плагина работает с вашими правами: запускайте только плагины, которым доверяете

Проверки почты, реестр блокировок и журналы сертификатов к сайту не обращаются, но любой scan всё равно открывает главную страницу: из неё собираются иностранные сервисы. --dns ru ведёт DNS-запросы через Яндекс DNS, но это касается только DNS: имя сайта всё равно уходит в журналы сертификатов (crt.sh, Cert Spotter, при проверке поддоменов) и в rdap.org, а IP-адреса — в Team Cymru (США).

Как запустить

Windows: двойной клик

Скачайте Suveren.exe со страницы Releases и запустите. Python не нужен. Windows может предупредить о неизвестном издателе: нажмите «Подробнее» → «Выполнить в любом случае». Exe собирается из этого кода на GitHub Actions.

Откроется меню — командную строку знать не нужно:

Меню Suveren

Из исходного кода то же меню открывает Suveren.bat: скачайте репозиторий (Code → Download ZIP), распакуйте и запустите батник. При первом запуске он сам установит всё нужное (нужен Python 3.11+).

Любая система

pip install "suveren[browser]"
suveren scan example.ru

Docker

docker build -t suveren https://github.com/marsilid/suveren.git
docker run --rm -v "$PWD:/work" suveren scan example.ru

Отчёт

Отчёт сохраняется в папку reports/ и сам открывается в браузере. Сверху — оценки, сумма возможных штрафов и что сделать в первую очередь; под каждой проблемой — доказательство, статья закона и как исправить.

HTML-отчёт

Раздел 152-ФЗ: каждая проверка со ссылкой на статью закона и возможным штрафом.

Проверка 152-ФЗ

Команды

Команда Что делает
suveren scan сайт.ru полная проверка сайта
suveren batch sites.txt проверка списка сайтов: сводная таблица, CSV и отчёт по каждому
suveren company <ИНН, ОГРН или сайт> ЕГРЮЛ, санкционные списки, реестр операторов ПДн
suveren diff old.json new.json что изменилось между двумя проверками
suveren checks [ID или тег] все проверки с ID и тегами
suveren services [фильтр] база распознаваемых сервисов
suveren update скачать свежие санкционные списки и реестр блокировок
suveren doctor проверить, что все источники данных отвечают
suveren audit reports/ не противоречат ли отчёты сами себе
suveren unknown внешние домены, которых нет в базе сервисов
suveren watch sites.txt --every 24h следить за сайтами: проверять снова и сообщать, что изменилось
suveren draft отчёт.json черновик политики или согласия по найденному (проверьте с юристом)
suveren verify сайт.ru подтвердить, что сайт ваш, — для --own-site и --form-leaks
suveren menu меню (то же, что двойной клик по exe)

Главные параметры scan:

Параметр Что делает
--browser, -b открыть сайт в браузере (Edge или Chrome): видны скрипты, которые подгружаются динамически
--profile quick|standard|deep quick — только иностранные сервисы; standard — все проверки (по умолчанию); deep — в браузере, до 12 страниц и с экспериментом --cutoff
--checks mail,SUV-LAW-001 только нужные проверки: по ID, префиксу или тегу
--pages N сколько внутренних страниц проверить кроме главной (по умолчанию 6)
--cutoff эксперимент: открыть сайт без иностранных сервисов и показать, что сломается
--form-leaks эксперимент: уходят ли данные из форм сторонним сервисам до отправки (только вместе с --own-site, после suveren verify)
--own-site режим «свой сайт»: .git и .env, шифры TLS, STARTTLS почты (после suveren verify)
--pdf файл.pdf сохранить отчёт ещё и в PDF
--docx файл.docx отчёт в Word: оценка, что сделать, штрафы, все проверки
--summary файл.html сводка на одну страницу для руководителя: оценка, главные риски, штрафы, что сделать
--brand-name, --brand-logo, --brand-url отчёт под брендом вашей студии
--json файл.json, --sarif файл.sarif результат для diff, CI и сканеров безопасности
--since прошлый.json что изменилось с прошлой проверки
--fail-under C, --fail-on fail ненулевой код выхода для CI
--ignore файл принятые находки с причиной, автором и сроком (по умолчанию .suveren-ignore)
--dns ru DNS-запросы только через Яндекс DNS. Остальные источники не меняются: имя сайта уходит в crt.sh, Cert Spotter и rdap.org, IP-адреса — в Team Cymru
--no-mail, --no-security, --no-subdomains, --no-152fz, --no-blocklist пропустить раздел

Полный список — suveren scan --help, подробности по каждой проверке — в руководстве.

Проверка компании

suveren company 7707083893      # по ИНН
suveren company 1027700132195   # по ОГРН
suveren company example.ru      # ИНН будет найден на сайте

Данные из ЕГРЮЛ (статус, дата регистрации, руководитель), проверка компании и руководителя по санкционным спискам США, ЕС, Великобритании и ООН, перечень Росфинмониторинга, реестр операторов ПДн и сверка с сайтом. Совпадения по ИНН и ОГРН точные, по названию и ФИО — возможные, их нужно проверить вручную.

Проверка компании

Много сайтов сразу

Для веб-студий: файл со списком сайтов, по одному в строке.

suveren batch sites.txt --browser

В reports/batch-… появятся сводная таблица index.html, summary.csv для Excel и отчёт по каждому сайту.

Сводка по списку сайтов

Для CI

suveren scan example.ru --no-open --sarif suveren.sarif --fail-on fail

Находку, с которой решили жить, можно принять в файле .suveren-ignore: ID, сайт, срок, автор и причина в строке. Она остаётся в отчёте, но не валит CI, а после срока снова считается.

SARIF читают GitHub и GitLab code scanning и DefectDojo. Коды выхода, формат JSON и плагины со своими проверками описаны в руководстве и docs/plugins.md.

Источники данных

Все источники открытые и бесплатные, ключи API не нужны: DNS, Team Cymru (сети IP-адресов), RDAP и WHOIS, ЕГРЮЛ (ФНС), реестр операторов ПДн РКН, выгрузка реестра блокировок от antifilter.download, журналы сертификатов (crt.sh, Cert Spotter), санкционные списки OFAC, ЕС, Великобритании и ООН, перечень Росфинмониторинга, база уязвимых библиотек retire.js, списки адресов облаков AWS, Google Cloud, Oracle и DigitalOcean. suveren doctor проверяет, что все они отвечают; на GitHub эта проверка идёт каждый день.

Ограничения

  • Отчёт помогает расставить приоритеты и не является юридическим заключением. У каждой проверки 152-ФЗ указана статья закона со ссылкой на текст, чтобы вывод можно было перепроверить.
  • Проверяются главная и до 6 внутренних страниц (--pages). Сервисы, которые есть только на остальных страницах, в отчёт могут не попасть.
  • Если сайт закрыт от роботов даже в браузере, проверки по коду страницы получают статус «не проверено», а не ложное «в порядке».
  • Если сайт за CDN, настоящий хостинг скрыт — Suveren об этом предупреждает.

Участие

Чтобы добавить сервис в базу, программировать не нужно: это файл данных services.json — как его заполнить, написано в руководстве. Можно и просто открыть issue «Добавить сервис». О найденных уязвимостях — по правилам из SECURITY.md.

pip install -e ".[dev,browser]"
pytest
ruff check . && ruff format --check .

Тесты не ходят в сеть: ответы реестров и фрагменты списков лежат в tests/fixtures.

Лицензия

Copyright © 2026 marsilid. Начиная с версии 1.1 — GNU AGPL-3.0 или более поздняя: код открыт, и любая изменённая версия, в том числе работающая как сервис, тоже должна быть открыта. Для закрытых продуктов и SaaS есть коммерческая лицензия — подробности в COPYRIGHT. Версии до 1.0.x были опубликованы под MIT и остаются под ней.

Связанный проект: ReconLens — пассивная OSINT-разведка домена с оценкой безопасности.

Metadata

Release files for suveren 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for suveren 2.0.0
File Size Uploaded Provenance Actions
suveren-2.0.0.tar.gz 645.6 kB With provenance Details for suveren-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for suveren 2.0.0
File Interpreter ABI Platform Actions
suveren-2.0.0-py3-none-any.whl Python 3 none any Details for suveren-2.0.0-py3-none-any.whl

Total release size: 1.1 MB

Release files / suveren-2.0.0.tar.gz

Download URL suveren-2.0.0.tar.gz
Size 645.6 kB
Tags Source
SHA-256 checksum
How to use checksums
abd19fe8b7d9872f9faeb76ee161d90ebaa674dadd84c23e9b1a6aed28df5082
BLAKE2b-256 checksum
How to use checksums
96f343689c139021f7e06e0229242aad34e6f378dd91b21e9ef3d7ca72bad87a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Release files / suveren-2.0.0-py3-none-any.whl

Download URL suveren-2.0.0-py3-none-any.whl
Size 466.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4a536cc48d1b647459824aa1b90c9997559a7fdecd32de9b8c94452e521f9cc
BLAKE2b-256 checksum
How to use checksums
9efd6903cf47d3ac5a460bf1fe0c52c4184d07d7fc1a0f66cabe461cd64af858
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

Security for suveren 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for suveren-2.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page