Запрос Rdap дает меньше результатов, чем whois для google.com?

Когда я выполняю простой поиск Whois для домена Google.com, я получаю следующие результаты:

[...]
Registrant Organization: Google LLC
Registrant State/Province: CA
Registrant Country: US
Registrant Email: Select Request Email Form at https://domains.markmonitor.com/whois/google.com
Admin Organization: Google LLC
Admin State/Province: CA
Admin Country: US
Admin Email: Select Request Email Form at https://domains.markmonitor.com/whois/google.com
Tech Organization: Google LLC
Tech State/Province: CA
Tech Country: US
[...]

Но когда я использую rdap, например, используя следующий веб-сайт:

https://client.rdap.org/?type=domain&object=google.com

Полученный json не содержит никаких данных, которые указывали бы на Google LLC. Это потому, что я неправильно использовал rdap, или потому, что запись rdap для Google просто не содержит данных о регистранте / администраторе / технической организации?

1 ответ

Решение

TL;DR: регистратор, связанный с доменом, который вы выбрали в качестве примера, не соблюдает правила и действительно не показывает контактные данные через RDAP, пока он показывает их через whois; это не то, что должно происходить и должно быть исправлено в какой-то момент; это не дефект протокола, просто один субъект не соблюдает спецификации. Если вы попытаетесь использовать другие имена (у других регистраторов), вы должны получить лучшие результаты.

Но поскольку ваша проблема может быть вызвана и другими причинами, ниже приведены дополнительные объяснения.

Эта проблема не обязательно специфична для RDAP, у вас точно такая же проблема для whois в случае.COM/.NET, поскольку это тонкий реестр, что означает, что в реестре нет данных о контактах.

Клиенты whois обычно имитируют перенаправления (которых нет в протоколе whois) и сначала показывают ответ whois реестра (нет контактов для домена.COM), а затем продолжают ответ whois регистратора (у которого есть контакты).

Вы не увидите эти 2 шага по умолчанию, если не обращаете внимания на клиентов whois, поскольку это операционная деталь.

Но структурированный RDAP дает вам ссылки и позволяет вам переходить по ним, но ваш клиент должен это делать.

Давайте начнем с нуля, чтобы следовать методике, которая будет работать во всех случаях, и просто вручную эмулировать клиента RDAP с помощью wget а также jq.

1) Поиск авторитетного сервера RDAP

Процесс в основном описан в RFC 7484, но давайте сделаем это вручную.

Здесь IANA является авторитетным источником, поэтому, если вы перейдете на http://data.iana.org/rdap/dns.json, вы найдете авторитетный сервер RDAP для.COM, а именно:https://rdap.verisign.com/com/v1/

2) Запрос сервера реестра RDAP

Согласно спецификациям RDAP, из базового URL-адреса выше вы знаете, что вам нужно использоватьhttps://rdap.verisign.com/com/v1/domain/google.com в качестве первого шага (т.е. конкатенации базового URL-адреса, затем domain, затем доменное имя, которое вам нужно).

Вы можете эмулировать это вручную, например, wget -O - https://rdap.verisign.com/com/v1/domain/google.com | jq .

Вы получите много данных, но ничего о контактах по причинам, изложенным выше, которые не имеют ничего общего с тем фактом, что вы используете RDAP, просто в реестре нет контактных данных.

Но ответ дает вам информацию о том, куда идти дальше, чтобы получить недостающие данные. Если вы внимательно посмотрите на возвращенные данные JSON, у вас есть эта часть:

  "links": [
    {
      "value": "https://rdap-core.vrsn.com/com/v1/domain/GOOGLE.COM",
      "rel": "self",
      "href": "https://rdap-core.vrsn.com/com/v1/domain/GOOGLE.COM",
      "type": "application/rdap+json"
    },
    {
      "value": "https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM",
      "rel": "related",
      "href": "https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM",
      "type": "application/rdap+json"
    }
  ],

Обратите пристальное внимание на relсвойство. Первая ссылка (это массив в ответе), имеетrel=selfЭто означает, что он дает вам канонический URL-адрес, представляющий объект, на который вы только что получили ответ. Повторное использование должно дать вам точно такой же ответ - если, конечно, объект не изменился - и полезно сохранить исходный URL-адрес в самом документе. И тот факт, что это не то же самое, что мы использовали, тогда как базовый URL отличается от того, что существует в IANA, здесь является просто эксплуатационной деталью без последствий.

Но посмотрите на второй с rel=related. Если вы посмотрите на спецификации RDAP и правила ICANN, то увидите, что это ссылка для получения дополнительных данных, то есть часть регистратора для случаев модели разделения реестра / регистраторов, как и во всех gTLD.

Поэтому мы должны использовать эту ссылку для следующего шага.

3) Запрос сервера RDAP регистратора

С wget -O - https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM | jq .если мы будем искать entities часть, где расположены контакты, получаем:

  "entities": [
    {
      "objectClassName": "entity",
      "handle": "292",
      "events": [
        {
          "eventAction": "registrar expiration",
          "eventDate": "2020-09-14T04:00:00.000+0000"
        }
      ],
      "roles": [
        "registrar"
      ],

...

И действительно, тогда нет другой сущности, это не что иное, как registrar. Этот сервер RDAP этого регистратора не предоставил обратно никаких контактных данных, в отличие от его доступа к whois. Это явно противоречит спецификации, и этот сервер не соответствует действующим правилам ICANN.

К сожалению, вы, вероятно, ничего не можете сделать на своем уровне, чтобы это изменить. Это изменится, так как ICANN в какой-то момент начнет применять меры, но до тех пор вам придется жить с такими несостоятельными делами, поскольку существует множество других.

4) То же самое для другого домена, лучшие результаты

Если вы повторите вышеуказанное с другим именем, скажите stackru.com вы связываетесь с другим регистратором и в окончательном ответе видите:

  "entities": [

...

   {
      "objectClassName": "entity",
      "handle": "",
      "vcardArray": [
        "vcard",
        [
          [
            "version",
            [],
            "text",
            "4.0"
          ],
          [
            "org",
            {
              "type": "work"
            },
            "text",
            "Stack Exchange, Inc."
          ],
          [
            "adr",
            [],
            "text",
            [
              "",
              "",
              "",
              "",
              "NY",
              "",
              "US"
            ]
          ]
        ]
      ],
      "roles": [
        "registrant"
      ],
      "remarks": [
        {
          "title": "REDACTED FOR PRIVACY",
          "type": "object truncated due to authorization",
          "description": [
            "Some of the data in this object has been removed."
          ]
        }
      ]
    },

Как вы можете видеть по registrant в roles, эта структура описывает данные регистранта. Однако из-за GDPR и, следовательно, временной спецификации ICANN большая часть данных отредактирована и фактически отсутствует. В основном у вас есть только имя и страна регистранта вvCard часть.

5) Резюме

Здесь следует помнить три момента:

  • одно из преимуществ RDAP (по сравнению с whois) состоит в том, чтобы давать четкие ссылки о том, куда идти дальше, чтобы получить дополнительную информацию; это процесс, описанный выше
  • пока это относится только к именам COM/NET, так как эти TLD работают в тонкой модели реестра, в которой реестр не имеет контактных данных; обратите внимание, что это обязательно исчезнет: даже если процесс откладывается несколько раз в ICANN, он действительно ожидает, и в некотором будущем COM/NET будет работать как любой другой gTLD, поскольку в реестре будут все контактные данные
  • Все вышеперечисленное находится под сильным влиянием GDPR, который ограничивает объем данных, отображаемых в настоящее время в whois, особенно о контактах. Поскольку будущая модель многоуровневого доступа сегодня неизвестна, возможно, у нас все еще будет многоэтапный процесс запроса, чтобы получить больше данных о контактах, в зависимости от того, кто запрашивает данные.
Другие вопросы по тегам