Перейти к содержимому

Проверка в реестре РКН API: блокировки домена и IP

GET /v1/redirekto/rkn ищет домен, URL или IP-адрес в официальном реестре блокировок Роскомнадзора и отвечает на два вопроса: заблокирован ли сам сайт и не стоит ли он на одном IP с заблокированными доменами — частая причина того, что сайт открывается в России с перебоями. Реестр обновляется ежедневно.

Параметр Тип Обязательный Описание
query string да домен, URL или IP-адрес (IPv4/IPv6), 1–500 символов
limit integer нет максимум записей в ответе, 1–20, по умолчанию 20
Окно терминала
curl -G https://proxy.seyka.ru/v1/redirekto/rkn \
-H "Authorization: Bearer $SEYKA_API_KEY" \
--data-urlencode "query=example.com" \
--data-urlencode "limit=5"
  • IP-адрес — записи реестра, в которых указан этот IP.
  • Слово без зоны (example) — ищутся example.com и example.ru; соседи по IP для него не ищутся.
  • Домен или URL — из URL берётся домен (схема, путь и порт отбрасываются, *. в начале тоже). Совпадением считается сам домен, любой его поддомен и — для поддомена — родительский домен: запись о example.com блокирует и blog.example.com. Кириллические домены ищутся и в кириллице, и в punycode.

Если у домена нет прямых совпадений, сервис получает его IP-адреса и ищет в реестре другие домены на тех же IP. Найденное приходит с ipCollision: true: сам сайт не заблокирован, но блокировка соседей по IP может задевать и его.

{
"query": "example.com",
"domainBlocked": false,
"ipCollision": true,
"matchCount": 1,
"matches": [
{
"id": "4815162",
"domain": "blocked-neighbour.com",
"url": null,
"authority": "Генпрокуратура",
"orderNumber": "27-31-2020/Ид2971-20",
"blockDate": "2022-03-04",
"ips": [{ "ip": "203.0.113.7", "countryCode": "NL", "org": "Example Hosting B.V." }]
}
],
"resolvedIps": [{ "ip": "203.0.113.7", "countryCode": "NL", "org": "Example Hosting B.V." }],
"queryTimeMs": 87
}
Поле Описание
query запрос, как он был принят (без пробелов по краям)
domainBlocked true — в реестре есть запись о самом домене, URL или IP из запроса. При ошибке (error) — null: результат неизвестен.
ipCollision true — прямых записей нет, но на IP домена есть другие заблокированные домены. При ошибке (error) — null: результат неизвестен.
matchCount число записей в matches
matches прямые записи, если domainBlocked, иначе — записи соседей по IP; не больше limit, сначала новые (в пределах одного поиска)
resolvedIps IP-адреса домена с геолокацией — только когда искались соседи по IP и они нашлись
queryTimeMs время поиска, мс
error код ошибки, если поиск не выполнен (см. ниже)

Запись реестра:

Поле Описание
id идентификатор записи в реестре
domain, url заблокированный домен и/или URL; null, если в записи их нет
authority орган, принявший решение
orderNumber номер решения
blockDate дата блокировки по записи реестра
ips IP-адреса записи: ip и, если известны, countryCode и org

Если domainBlocked и ipCollision оба false, а matches пуст — записей нет.

Некорректный запрос не превращается в HTTP-ошибку: приходит 200 с пустым matches, domainBlocked и ipCollision равны null, причина — в error.

error Когда
domain_invalid_characters в домене есть недопустимые символы (*, ?, %, пробелы и т. п.)
domain_part_too_short слово без зоны короче двух символов или одна из двух последних частей домена короче двух символов
rkn_lookup_failed поиск в реестре не удался — можно повторить позже

Запрос длиннее 500 символов отклоняется кодом 502. Коды — на странице Ошибки.

POST /v1/redirekto/rkn принимает массив из 1–25 объектов {"query": "…", "limit": 20} (limit можно не указывать) и возвращает массив результатов в том же порядке:

Окно терминала
curl https://proxy.seyka.ru/v1/redirekto/rkn \
-H "Authorization: Bearer $SEYKA_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"query": "example.com"}, {"query": "203.0.113.7", "limit": 5}]'

Элемент с некорректным доменом получит своё error, остальные — обычный результат. Запрос длиннее 500 символов в любом элементе отклоняет весь пакет кодом 502. Общие правила — в обзоре Redirekto.

Каждый запрос — один вызов, пакет — по числу элементов; повтор из кэша бесплатен. Цены и окно кэша — в таблице цен.