Проверка в реестре РКН 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.
Каждый запрос — один вызов, пакет — по числу элементов; повтор из кэша бесплатен. Цены и окно кэша — в таблице цен.