Форумы портала PHP.SU » Разное » Обсуждение статей » Очень нужен php скрипт для проверки существования доменного имени

Страниц (1): [1]
 

1. slave - 20 Января, 2010 - 14:41:27 - перейти к сообщению
Добрый день.

С интересом прочла статью на данном сайте: http://php.su/articles/?cat=exam...les&page=064

Жаль непосредственно необходимого мне скрипта там нет.
Нужен скрипт для проверки существования доменного имени, т.е. имеется окошечко, в которое вводим желаемое доменное имя, жмакаем кнопочку "проверить" и он выдает что-нить типа "доменное имя свободно"/"доменное имя занято". Есть ли у кого-нибудь соображения по этому поводу или примеры написания? Очень прошу помощи.

С уважением, Гульнара.
2. EuGen - 20 Января, 2010 - 15:00:09 - перейти к сообщению
Для определения информации о доменах есть единственный способ автоматического решения. А именно - запрос к регистратору.
Как например, на whois.domaintools.com
Но здесь есть одно но - регистраторы не допустят, чтобы их базы вытаскивали через такие запросы. Существуют различные ограничения на количество запросов/частоту/локацию и т.п. в зависимости от запрашиваемого ресурса.
Отвлекаясь от этого задача сводится к запросу требуемой страницы при помощи cURL (как пример whois.domaintools.com/microsoft.com) и разбору полученных результатов.
При этом стоит учитывать возможность смены представления данных, которое использует регистратор при показе страницы (в общем-то они это делают специально для затруднения сбора информации доменными пауками)
Возможность обойти тоже пока что единственная - использовать прокси-сервер. То есть, получать списка прокси-серверов с каких-либо прокси-листов, тестировать их на безопасность для использования, и направлять запросы cURL через них.
Стоит учитывать, что прокси-листы постоянно меняются, какие-то прокси появляются, какие то исчезают.
Тестировать же на безопасность использования прокси сервер можно так: сделать через него запрос на собственный же скрипт, который посмотрит переменные окружения. Если среди них не будет данных о первоначальном источнике запроса, значит, прокси полностью анонимен и его можно использовать.
А вообще написание доменных пауков дело неблагодарное. Регистраторы вроде как хотели вообще переходить к выводу информации через графические библиотеки (то есть картинками, которые уж точно невозможно проанализировать с помощью регулярных выражений).
3. Мелкий - 20 Января, 2010 - 15:07:16 - перейти к сообщению
EuGen, мм, а я думаю, что будет достаточно DNS-сервер пнуть. Только проверить надо будет, что возвращается, если DNS-имя свободно.
http://php.su/functions/?dns_get_record
4. EuGen - 20 Января, 2010 - 15:36:54 - перейти к сообщению
Ничего не вернет она в этом случае. (вернее, пустой массив вернет)
Я отталкивался от того, что задача опеределения занятости доменов как правило исходит из необходимости знать информацию о владельцах, сроке действия записи и т.п. (то, для чего создаются доменные пауки) Поэтому рекомендовал более общий подход, позволяющий это все реализовать.
Правда, если нужен действительно простой способ узнать именно занятость, такая проверка вполне подойдет.
Стоит учитывать так же то, что она будет недоступна в системах Windows а так же не всегда возвращает корректные результаты на *BSD (правда в случае *BSD, есть библиотека Net_DNS)
5. vitaliy_mad - 20 Января, 2010 - 16:47:32 - перейти к сообщению
отсутствие ответа от dns-сервера не говорит о свободности имени... для пример сравните результаты:

и

это мой домен, но в ДНС запись пока отсутствует...
6. EuGen - 20 Января, 2010 - 17:32:48 - перейти к сообщению
Это тот случай, когда запись о DNS еще не успела разойтись по серверам. Весьма нечастый случай, я думаю, но если это важно, то следует учитывать.
7. vitaliy_mad - 20 Января, 2010 - 17:34:54 - перейти к сообщению
EuGen пишет:
когда запись о DNS еще не успела разойтись по серверам
он не не успела. Она просто отсутствует. у ДНС-сервера нет IN A записо об этом домене... и таких примеров много. когда домен зарегестрирован, но не используеться, запись о нем часто удаляют с ДНС-сервера.
8. EuGen - 20 Января, 2010 - 17:36:43 - перейти к сообщению
Вот что мы увидим, если сделаем:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgTest=dns_get_record('nenado.com');
  3. echo('<pre>');
  4. print_r($rgTest);
  5.  

:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [host] => nenado.com
  6.             [type] => NS
  7.             [target] => ns.mad-net.org.ua
  8.             [class] => IN
  9.             [ttl] => 172800
  10.         )
  11.  
  12.     [1] => Array
  13.         (
  14.             [host] => nenado.com
  15.             [type] => NS
  16.             [target] => ns2.mad-net.org.ua
  17.             [class] => IN
  18.             [ttl] => 172800
  19.         )
  20.  
  21. )
  22.  
  23.  

Я это имею ввиду - нам ведь и не надо знать этой записи..
9. vitaliy_mad - 20 Января, 2010 - 17:48:01 - перейти к сообщению
согласен. эта функция выдает результаты whois данных.
10. EuGen - 20 Января, 2010 - 17:50:57 - перейти к сообщению
Да. Ну, а почему все-таки не всегда она может быть использована, я отписал постом выше.
11. slave - 21 Января, 2010 - 14:09:56 - перейти к сообщению
Ддда... думалось, что это дело попроще... Спасибо за рекомендации, хотя чую не разберусь))

 

Powered by ExBB FM 1.0 RC1