Конвертация fsockopen to CURL для whois

Автор Sevab, 02-07-2012, 09:15:46

« назад - далее »

SevabTopic starter

Есть скрипт на fsockopen для сканирования whois данных, который замечательно работает. Вот он:


$server = 'ru.whois-servers.net';
$port = 43;
$query_args = 'seosum.ru';

$ptr = @fsockopen($server, $port, $errno, $errstr, 10);
fputs($ptr, trim($query_args)."\r\n");

            $raw = '';
while (!feof($ptr))
{
$raw .= fgets($ptr, 1024);
}
$output = explode("\n", $raw);
var_dump ($output);


Собственно мне нужно переписать его с использованием прокси. Вероятно это будет CURL.
Но на нем ничего не получается. Этот код не работает:


$server = 'ru.whois-servers.net';
$port = 43;
$query_args = 'seosum.ru';

               $ch = curl_init($server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_PORT, 43);
curl_setopt($ch, CURLOPT_POSTFIELDS, trim($query_args)."\r\n");

$data = curl_exec($ch);

$output = explode("\n", $data);
               var_dump($data);


Всегда возвращает Invalid request.

Проблемам в том, что сервер ru.whois-servers.net запрашивается для определения основного хуиза для домена. Например для зоны .com это будет com.whois-servers.net, затем идет редирект на основной хуиз доменной зоны.
Поэтому другие варианты чем whois-servers.net мы не рассматриваем, как их парсить я знаю. Нужен именно этот вариант.

Перерыл уже всю сеть, но ничего работающего не нашел.
Кто что подскажет? ???


Haosame

На досуге немного поковырялась с cURL. Дошло до того, что скриптик просто выдает "Недопустимый запрос!".
Собственно, вот что получилось:


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "ripn.net/nic/whois/whois.cgi");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "Whois=seosum.ru&Host=whois.ripn.net");
$data=curl_exec($ch);
curl_close($ch);
echo $data;


Сервер с ru.whois-servers.net был заменен на тот скрипт, к которому обращаемся непосредственно через поиск: ripn.net/nic/whois/whois.cgi
Добавилась инициация POST запроса и данные для передаваемых полей "Whois=seosum.ru&Host=whois.ripn.net"
Так же была добавлена команда CURLOPT_FOLLOWLOCATION, что в случае редиректа, не считать это ошибкой, а брать контент той, купа перенаправили.

Опытным путем было установлено, что "Недопустимый запрос" возникает при не правильно переданном значении поля Whois. Пляски с бубном вокруг кавычек не помогли :(

Надеюсь, что хоть немного Вам помогла.
  •  


SevabTopic starter

Haosame, спасибо.
Но дело в том что обращаться нужно именно к whois-servers.net (или к подобным), ввиду того что приведенный выше код является лишь частью сложного, универсального (по любым доменным зонам) скрипта.
А курл мне нужен для использования прокси, чтобы не было превышения количества запросов к хуиз сервисам.