как обрабатывать данные whois - PullRequest
0 голосов
/ 06 мая 2011

Мне нужно поместить данные whois в таблицу, такую ​​как

  • Регистрант,
  • дата создания,
  • дата окончания и т. Д.

У меня есть сценарий, который извлекает данные из серверов whois, но вывод отличается для каждого расширения домена.

Например, для .com информация о владельце домена указывается в виде общего адреса, а для .org домена она указывается как имя владельца домена, street1, street2, street3 и т. Д.

, поэтому яне в состоянии извлечь информацию о владельце регистрации как единицу, которую нужно поместить в базу данных.

где-то, где я слышал, если мы получим в виде XML-данных, мы сможем их извлечь, может ли кто-нибудь помочь обойти это?Спасибо!.

Ответы [ 3 ]

5 голосов
/ 28 июня 2012

На самом деле проблема гораздо больше.

  • нет единого синтаксиса для запроса
  • или определенного набора возможностей
  • нет определенногосхема ответов
  • местное законодательство делает содержание другим
  • не установлена ​​ошибка с сандализмом
  • слабое качество записанной информации
  • , с которой вам приходится иметь делоинтернализация

Служба WHOIS определяется RFC3912.Это очень простой протокол запросов, который вообще не определяет формат ответа .Таким образом, ответы часто отражают формат базы данных, содержащей данные, и вы можете получить различный синтаксис для каждой базы данных.Поскольку WHOIS может использоваться для любого содержимого, которое вы хотите, вы не можете делать много предположений относительно формата ответа, который вы получите.Надеемся, однако, что вы можете рассчитывать на получение анализируемого контента и аналогично отформатированных ответов для каждого запроса.

Таким образом, вам необходимо разработать логику разбора для каждого сервера, что вам придется делать очень эмпирическим образом.

Однако вот несколько советов для вашей разработки, которые исходят из RFC.

  • вам необходимо отправить запрос через TCP-порт 43 с одной строкой, оканчивающейся символами CR + LF ASCII

  • вы должны ожидать окончания TCP-соединениячто означает, что ответ закончен, только.

Что касается доменных имен, в частности, вы можете заметить, что ранее ограничение на кодировку ASCII заставляло некоторых владельцев регистраций использовать Punycode для кодирования некоторых (подчеркиваетсяпример) строки в DNS-системах, поэтому вы можете захотеть ожидать их в ответе на Whois, если встретитесь в некоторых ответах.Существование интернационализированных доменных имен с 2003 года потребует от вас поддержки кодировки Unicode.Алгоритмы преобразования имен сложны, RFC 3490 должен дать вам некоторые полезные сведения об этом.

Удачи!

1 голос
/ 06 мая 2011

Вам необходимо определить формат и использовать для них различные регулярные выражения. В качестве альтернативы, как вы упоминали, вы можете использовать XML или даже JSON API http://whoisxmlapi.com/ http://www.domaintools.com/api/docs/

0 голосов
/ 28 июня 2012

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

Данные, предоставленные удаленной службой, имеют другой формат, как вы уже отметили.Таким образом, вам необходимо разделить задачи извлечения и анализа данных, потому что обе вещи независимы друг от друга.Например, формат для одного TLD может меняться с течением времени .

Итак, прежде всего вы выбираете данные в виде простого текста для каждого домена и сохраняете их метаданные:

  • домен
  • whois-сервер
  • метка времени операции выборки
  • ответ
  • код состояния (если таковой имеется в протоколе)

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

После правильного анализа вы получите нормализованный формат, к которому вы стремитесь.

Далеек этим техническим процессам вы должны позаботиться об условиях использования, предлагаемых службой (-ами) whois.Не все, что технически возможно, юридически или морально принято.Заботьтесь и относитесь к личным записям других лиц с уважением, которого они заслуживают.Защитите данные, которые вы собираете, например, архивируйте и скремблируйте / блокируйте данные, которые вам больше не нужны для дальнейшей обработки.

См. Также:

...