Как правильно построить запрос к Whois серверу?

Оксиген
На сайте с 30.07.2006
Offline
444
1188

Надо пробить списочек из нескольких сотен имен. Вручную делать лень. Написал простенькую программу, вроде все работает, но после пары проверок она встает. Какие тут ньюансы? Зона не RU.

Магазин готовых сайтов (https://www.bdb.ru/shop/) Продление доменов в RU-CENTER по партнерским тарифам.
bums
На сайте с 03.07.2006
Offline
449
#1
но после пары проверок она встает

останавливается потому что ограничение количества запросов у каждой зоны свое, выясняете это ограничение и пишете

#whois domain1.tld domain2.tld domain3.tld domain4.tld и т.д. до ограничения

далее пауза минуту и пановой

#whois domain5.tld domain6.tld domain7.tld domain8.tld и т.д. снова до ограничения
Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
Awe
На сайте с 08.02.2006
Offline
54
Awe
#2
Оксиген:
Надо пробить списочек из нескольких сотен имен. Вручную делать лень. Написал простенькую программу, вроде все работает, но после пары проверок она встает. Какие тут ньюансы? Зона не RU.

А почему бы не воспользоваться программами для сканирования?

Онлайн магазин Гифт карточек Godaddy (http://www.egiftcard.ru)
Оксиген
На сайте с 30.07.2006
Offline
444
#3

bums, скрипт встает всё время на разных участках. То 2 результата выдаст, то 5, то 14.

Awe, какими например?

Awe
На сайте с 08.02.2006
Offline
54
Awe
#4
Оксиген:
bums, скрипт встает всё время на разных участках. То 2 результата выдаст, то 5, то 14.

Awe, какими например?

Как самый простой вариант - программа Domain Name Analyzer от Idotz.net.

Andris
На сайте с 10.12.2006
Offline
167
#5

Оксиген, скрипт на чём написан? sh, PHP?

Типовые договоры передачи прав на домены, их доработка Выполнение функций гаранта сделок с доменами Юридическое обеспечение сделок, консультации
Оксиген
На сайте с 30.07.2006
Offline
444
#6

Andris, скрипт написан на Perl, запросы идут через сокеты. Думаю, может минутный перерыв делать перед каждым запросом?

A
На сайте с 05.11.2005
Offline
111
#7

Ну так в цикле ставим sleep(60) и вперед. :)

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

также неплохо отрабатывать сообщение о превышении лимита, и только после этого приостанавливать скрипт.

Оксиген
На сайте с 30.07.2006
Offline
444
#8

azzz, при работе скрипта возникает непонятная проблема. Спотыкается он тут:

$iaddr = inet_aton($server) || die &function_error("Хост не найден: $server");

Причем значение sleep не играет никакой роли. Что 10 ставь, что 1, хоть вообще убери. Закономерность не прослеживается. То 1 домен проверит, то 10, то ни одного вообще - встает сразу. Сообщений о превышении лимита не видел ни разу.

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#9
Оксиген:
при работе скрипта возникает непонятная проблема.

Оно и понятно, была бы понятная проблема - ее бы не было. Для нескольких сотен доменов задержки не нужны, как не печально, но ошибка может быть самой заурядной - синтаксической. Я пользуюсь подобной функцией:


<?php

print "<pre>".lookup("yandex.ru")."</pre>";
print "<pre>".lookup("yandex.sc.cn")."</pre>";
function get_whois_server($domain){

$whoisservers=array(array("ru","whois.ripn.ru"),array("sc.cn","whois.cnnic.net.cn"));
$whocnt = count($whoisservers);
for ($x=0;$x<$whocnt;$x++){
$artld = $whoisservers[$x][0];
$tldlen = intval(0 - strlen($artld));
if (substr($domain, $tldlen) == $artld) $whosrv = $whoisservers[$x][1];
}
return $whosrv;
}

function lookup($dom){
$lusrv = get_whois_server($dom);
if (!$lusrv) return "";

$fp = fsockopen($lusrv,43);
fputs($fp, "$dom\r\n");
$string="";
while(!feof($fp)){
$string.= fgets($fp,128);
}
fclose($fp);

$reg = "/Whois Server: (.*?)\n/i";
preg_match_all($reg, $string, $matches);
$secondtry = $matches[1][0];

if ($secondtry){
$fp = fsockopen($secondtry,43);
fputs($fp, "$dom\r\n");
$string="";
while(!feof($fp)){
$string.=fgets($fp,128);
}
fclose($fp);
}

return $string;
}
?>

$whoisservers заполняете в соответствии с зонами, спотыкаться может только при неопределенной зоне. А с ответом можно делать все что хотите.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий