Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » whois на php

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

timprog

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема! ip выводится, а whois не работает.
 
<?php
 
function GetIP()
{
   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
           $ip = getenv("HTTP_CLIENT_IP");
       else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
           $ip = getenv("HTTP_X_FORWARDED_FOR");
       else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
           $ip = getenv("REMOTE_ADDR");
       else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
           $ip = $_SERVER['REMOTE_ADDR'];
       else
           $ip = "unknown";
   return($ip);
}
 
  function whois($ip) {  
  $server="whois.ripe.net";  
  $f = @fsockopen($server, 43);  
  if ($f) {  
    @fputs($f, $ip."\r\n");  
    while(!feof($f)) {  
      $data .= @fread($f, 1000);  
    }  
    fclose($f);  
  }  
  eregi ("country: *([A-Z]{2})",$data,$country);  
  return ($country[1]);  
}  
 
$i=GetIP();
$result=whois($i);
 
echo $i;
echo $result;
if ($result=="CH") { die("Poka ne dlya Kitaya ");
}
?>
 
Добавлено:
Если убрать @ выводит:
 
Warning: fsockopen() [function.fsockopen]: unable to connect to whois.ripe.net:43 (Connection refused) in *******************index.php on line 23
 
83.221.2.114

Всего записей: 178 | Зарегистр. 14-09-2004 | Отправлено: 22:23 08-05-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
timprog

Цитата:
а whois не работает.  

по русски пишем, что значит не работает.
за азиатский блок отвечает whois.apniс.net
а не то, что у тебя написано

Цитата:
Warning: fsockopen() [function.fsockopen]: unable to connect to whois.ripe.net:43 (Connection refused) in *******************index.php on line 23  

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:29 08-05-2005 | Исправлено: Cheery, 22:30 08-05-2005
timprog

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Хостинг не бесплатный: myhosting.com.
вот phpinfo:http://x.flamezsoft.com/phpinfo.php

Всего записей: 178 | Зарегистр. 14-09-2004 | Отправлено: 23:03 08-05-2005 | Исправлено: timprog, 23:15 08-05-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
timprog
при чем тут это? попробуй сменить whois адрес как я сказал..
если не поможет, то у тебя запрещены исходящие коннекты.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:09 09-05-2005
timprog

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, к сожалению запрещены.

Всего записей: 178 | Зарегистр. 14-09-2004 | Отправлено: 13:20 09-05-2005
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот мой вариант хуиза:
 

Цитата:
#######################  
$target=$ip;  
$buffer="";  
#######################  
 
if (!$sock=fsockopen("whois.arin.net", 43, $error_num, $error, 20)) {  
unset($sock);  
$error_msg="Timed-out connecting to $server (port 43)...";  
}  
 
else {  
fputs($sock, "$target\n");  
while(!feof($sock)) {$buffer.=fgets($sock, 10240);}  
fclose($sock);  
}  
 
 
if (eregi("ReferralServer: whois://whois.ripe.net", $buffer)) {$nextserver="whois.ripe.net";}  
if (eregi("ReferralServer: whois://whois.apnic.net", $buffer)) {$nextserver="whois.apnic.net";}  
if (eregi("ReferralServer: whois://whois.lacnic.net", $buffer)) {$nextserver="whois.lacnic.net";}  
if (eregi("ReferralServer: whois://whois.afrinic.net", $buffer)) {$nextserver="whois.afrinic.net";}  
 
 
if (isset($nextserver)) {  
$buffer="";  
if(!$sock=fsockopen($nextserver, 43, $error_num, $error, 10)) {  
unset($sock);  
$error_msg="Timed-out connecting to $nextserver (port 43)...";}  
else {  
fputs($sock, "$target\n");  
while (!feof($sock)) {$buffer.=fgets($sock, 10240);}  
fclose($sock);}  
}  
 
 
if (empty($nextserver)) {$nextserver="whois.arin.net";}  
echo <<<EOF  
<h2 align="center"><span style="color: #cc0000;">whois://{$nextserver}<span style="color: blue;">:</span>43</span></h2>  
EOF;
$buffer=str_replace(" ", "&nbsp;", $buffer);  
echo nl2br($buffer);  
if (isset($error_msg)) {echo $error_msg;}


Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 13:33 13-11-2005
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ARIN по некоторым ИП (которык ОН заведет) выдает очень мало инфы, например по:  
207.114.212.203  
65.110.40.49
 

Цитата:
Time Warner Telecom TWTC-NETBLK-5 (NET-207-114-128-0-1)  
                                  207.114.128.0 - 207.114.255.255  
 
The Computer Shop Netlink TCSN1 (NET-207-114-212-0-1)  
                                  207.114.212.0 - 207.114.212.255  
 
# ARIN WHOIS database, last updated 2005-11-12 19:10  
# Enter ? for additional hints on searching ARIN's WHOIS database.

 
Как мне сказали, далее надо делать запрос по NET-207-114-128-0-1. А как программно на ПХП сделать, чтобы когда попадаются такие ИП, то надо дальше делать хуиз сетки?

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 19:03 15-11-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte

Цитата:
А как программно на ПХП сделать, чтобы когда попадаются такие ИП, то надо дальше делать хуиз сетки?

ну включи голову.. сравни нормальный ответ и такой и проверяй насчет того, что есть в одном и нет во втором.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:47 15-11-2005
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот код:
 
function domain_whois($domain) {
$buffer=$whois=$flag1=$flag2='';
 
if (!$sock=fsockopen("whois.enom.com", 43, $error_num, $error, 30)) {
unset($sock);
}
 
else {
fputs($sock, "$domain\n");
while(!feof($sock)) {$buffer.=fgets($sock,128);}
fclose($sock);
}
 
 
echo nl2br($buffer);
 
} // domain_whois()
 
domain_whois("000.net");
 
 
===
 
Скрипт отлично чекает любые зоны, а вот на еноме виснет. В чем дело?
 
bsd# whois -h whois.enom.com 000.net - пашет нормально...

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 00:49 15-07-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
У меня косвенный вопрос, тоже касающиеся whois только меня больше интересует Reverse Ip доменных имен по некоему IP. Другими словами известный факт что часто на одном IP сидит много доменов, к примру при шаред хостинге или если сервер так сконфигурирован. Как можно получить все доменные имена которые сидят на данном IP?
 
Спасибо за ответ
 
п.с. Давно была мысль, просканить постепенно все IP и создать свою базу, а уж потом из нее в обратном порядке получать все доменные имена относящие к данному IP.

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 01:56 15-07-2006
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нельзя так, только один поиидее можно.

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 12:21 16-07-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
Да но я знаю несколько сайтов которые это умеют делать
 
п.с. Нельзя получить эти данные или вообще вы считаете что на одном IP нельзя несколько сайтов?

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 13:57 16-07-2006
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сервисы эти гугл сканят на писки доменов и делают обычный резолв собирая ИП в базу.

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 14:14 16-07-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
А это опции на халяву тен? Или как можно избежать скана всех IP? Большинство же будет просто провайдерские

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 15:04 16-07-2006
Terabyte



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никак, постоянно пересканивать.

Всего записей: 1325 | Зарегистр. 09-09-2002 | Отправлено: 17:36 16-07-2006
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Terabyte
Большое спасибо, думаю мою тему можно считать временно закрытой

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 20:38 16-07-2006
BAZIL



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Такая проблема:
 

Цитата:
%ERROR:201: access denied for ip.ip.ip.ip

 
Как этого избежать? Поочерёдно менять whois-сервера?
 

Код:
 
    $ip = $_SERVER["REMOTE_ADDR"];
    $server="whois.lacnic.net";
    $f = @fsockopen($server, 43);
    if ($f) {
        @fputs($f, $ip."\r\n");
        while(!feof($f)) {
            $data .= @fread($f, 1000);
        }
        fclose($f);
    }
    eregi ("country: *([A-Z]{2})",$data,$country);
 


----------
Toutes les histoires, commencent pareil
Rien de nouveau sous la lune...

Всего записей: 459 | Зарегистр. 13-05-2002 | Отправлено: 20:54 13-11-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BAZIL

Цитата:
Как этого избежать? Поочерёдно менять whois-сервера?

ограничить число подключений в сек. а то вот так забанят.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:46 13-11-2006
21Vlad21

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а у меня задача не получать who.is данные а просто проверитль свободен ли домен
 
сделал такое
 
 
$grab=gethostbyname("$domen");  
 
if ($grab!=$domen)
{
echo "занят";
}
else
{
echo "свободен";
}
 
 
в большинстве случаем работает корректно но не вовсех
пример com.biz выдает как свободный
 
Что подскажите?
 

Всего записей: 13 | Зарегистр. 09-08-2006 | Отправлено: 22:41 24-11-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
21Vlad21

Цитата:
пример com.biz выдает как свободный

он и есть "свободный", только никто тебе его не даст.  

Цитата:
if ($grab!=$domen)  

 
не понимаю этого сравнения.
сравнивать имя домена с полученным IP...??

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:45 24-11-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » whois на php


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru