Автоматические тесты
Облачные сервисы (категории с type: service) тестируются автоматически, если в их файле рейтинга указан domain. Почтовые провайдеры и сервисы пересылки с mail_domain также проходят почтовый тест.
| Тест | Что проверяет | Критерий | Да | Частично | Нет |
|---|---|---|---|---|---|
| Qualys SSL Labs | Версии TLS, шифры, сертификаты и известные уязвимости TLS | tls |
A+ или A | A- или B | C или ниже |
| Mozilla HTTP Observatory | Заголовки безопасности, такие как CSP, HSTS и X-Frame-Options, и флаги cookie | security_headers |
A+ или A | A-, B+ или B | B- или ниже |
| Тест сайта Internet.nl | IPv6, DNSSEC, HTTPS и параметры безопасности | web_standards |
90% или больше | От 70% до 89% | Ниже 70% |
| Почтовый тест Internet.nl | IPv6, DNSSEC, DMARC, DKIM, SPF, STARTTLS и DANE для почтового домена | mail_standards |
90% или больше | От 70% до 89% | Ниже 70% |
| Hardenize | Настройки безопасности DNS, почты и веба | Только ссылка |
Почтовые стандарты
Почтовые провайдеры и сервисы пересылки с mail_domain также проходят эти тесты, которые выполняет scripts/mail-tests.js:
| Тест | Что проверяет | Критерий | Да |
|---|---|---|---|
| DNS over HTTPS | SPF, политика DMARC, режим MTA-STS (RFC 8461), TLS-RPT (RFC 8460), проверка DNSSEC, DANE TLSA на каждом MX-хосте (RFC 7672), а также BIMI и SRV-записи RFC 6186 для информации | transport_security |
Все шесть применяются принудительно |
IMAP CAPABILITY |
Неявный TLS на порту 993 (RFC 8314), IMAP4rev1 или IMAP4rev2, IDLE. При недоступности — STARTTLS на порту 143 | imap_standards |
Неявный TLS, IMAP4rev1/rev2 и IDLE |
POP3 CAPA |
Неявный TLS на порту 995, CAPA (RFC 2449), UIDL. При недоступности — STLS на порту 110 | pop3_standards |
Неявный TLS, CAPA и UIDL |
SMTP EHLO |
Отправка по неявному TLS на порту 465, SMTPUTF8, 8BITMIME, PIPELINING, AUTH. При недоступности — STARTTLS на порту 587 | smtp_standards |
Неявный TLS и все четыре расширения |
Имена серверов берутся из imap_host, pop3_host и smtp_host в файле рейтинга или из SRV-записей RFC 6186 провайдера. Если провайдер не поддерживает протокол, укажите для соответствующего хоста false. Возможности — это то, что каждый сервер сообщает до входа; полные списки показаны на странице каждого рейтинга.
Трекеры на сайте
Каждая запись с сайтом, включая приложения, проходит тест трекеров, который выполняет scripts/trackers.js. Он загружает главную страницу без выполнения JavaScript и сравнивает хосты всех скриптов, фреймов, изображений и таблиц стилей, а также встроенный код, со списком известных сервисов отслеживания и аналитики.
| Что найдено | Влияние на no_trackers |
|---|---|
| Сторонние трекеры, такие как Google Analytics, Google Tag Manager, Meta Pixel, Hotjar или HubSpot | Ответ становится «нет», что бы ни было указано в файле рейтинга |
| Аналитика без cookie (Plausible, Fathom, Simple Analytics, Matomo Cloud, Cloudflare Web Analytics) | «Да» становится «частично» |
| Шрифты, встраиваемые элементы, отчёты об ошибках, чат поддержки или инструменты согласия | Указываются на странице, не оцениваются |
| Ничего | Используется ответ из файла рейтинга |
Если сайт — это страница на хостинге кода или в магазине приложений (GitHub, GitLab, Codeberg, SourceForge, F-Droid, Google Play и подобные), тест пропускается, потому что этой страницей управляет не проект.
Тест видит только трекеры, прописанные в самой странице. Трекеры, добавляемые позже скриптами, и телеметрия внутри приложений по-прежнему требуют подтверждений в файле рейтинга, например политики конфиденциальности или отчёта Exodus Privacy.
SRS и ARC нельзя увидеть снаружи без отправки почты, поэтому это критерии, на которые отвечают с подтверждениями, а не тестами.
Автоматические проверки, которые ещё не запускались, отображаются как «Ещё не тестировалось» и не учитываются в баллах, поэтому провайдер никогда не теряет баллы из-за теста, который ещё не проводился.
Для SSL Labs используется самая низкая оценка среди всех IP-адресов домена.
Hardenize больше не предоставляет публичный API, поэтому каждая страница ссылается на его публичный отчёт, а не оценивает его.
Расписание
Workflow сканирования запускается каждый день и тестирует 40 записей с самыми старыми результатами (для Internet.nl действуют собственные ограничения, см. ниже), поэтому каждый сервис регулярно тестируется без перегрузки бесплатных API. Результаты сохраняются в scans/ в формате JSON, коммитятся в репозиторий и публикуются вместе с сайтом. На каждой странице показано, когда её тесты запускались последний раз.
При неудачном тесте сохраняется предыдущий результат и записывается ошибка, поэтому временный сбой не меняет баллы.
Ограничения Internet.nl
Пакетный API Internet.nl используется в рамках его условий использования:
- Не более 2 пакетных запросов за любые 7 дней. Тест сайта и тест электронной почты — это отдельные запросы, поэтому один полный цикл использует оба.
- Не более 5000 доменов на запрос. Если доменов с этим тестом больше, первыми идут домены без результатов или с самыми старыми результатами, а остальные ждут следующего запроса.
- Запросов для отдельных доменов нет, поэтому
--onlyпропускает Internet.nl.
Каждый запрос записывается в scans/internetnl-requests.json, который коммитится вместе с результатами, даже если запуск завершился ошибкой. Запуск, обнаруживший, что недельный лимит исчерпан, пропускает Internet.nl и сохраняет имеющиеся результаты. Пакеты обрабатываются часами, поэтому статус запроса проверяется каждые 5 минут, а запрос, который ещё выполняется к концу запуска, забирается одним из следующих запусков, а не отправляется повторно. Internet.nl игнорирует --limit, а учётные данные Internet.nl используют только запуски в ветке по умолчанию, поэтому все запуски ведут одну общую запись.
Этот сайт повторно использует результаты тестов, предоставленные инструментом тестирования Internet.nl.
Настройка
Все параметры — необязательные секреты репозитория (Settings › Secrets and variables › Actions):
| Секрет | Назначение |
|---|---|
SSLLABS_EMAIL |
Адрес почты, зарегистрированный в SSL Labs API v4. Без него используется API v3. Для регистрации нужен адрес почты организации. |
INTERNETNL_USERNAME, INTERNETNL_PASSWORD |
Аккаунт для пакетного API Internet.nl. Без них страницы ссылаются на публичные тесты Internet.nl, а критерии Internet.nl остаются «неизвестно». |
INTERNETNL_API |
Базовый URL пакетного API для собственного экземпляра Internet.nl. По умолчанию https://batch.internet.nl/api/batch/v2. |
Mozilla HTTP Observatory не требует аккаунта. Данные о лицензиях GitHub используют встроенный токен workflow.
Локальный запуск тестов
npm ci
node scripts/scan.js --only email-providers/forward-email
node scripts/scan.js --limit 5 --tests observatory
node scripts/scan.js --tests mail-dns # email DNS checks only
npm run test:unit # protocol probes against local mock servers
npm run build
Какой домен тестируется
Поле domain должно указывать на основной сайт или веб-приложение, где люди входят в аккаунт, например mail.example.com, а не на маркетинговый поддомен на другом хосте. Производители могут предложить более точный домен в pull request.