Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Где проверить соотношение айпи-страна
 
 автор: Shorr Kan   (26.04.2005 в 06:20)   письмо автору
 
 

Скажите, а куда-таки подсоединяться, чтобы проверять айпи и страну? Я прямо руками через браузер на ripe.net пробовал - ничего не выдает... Так куда коннектиться-то? Собственно, где бы скрипту удобнее было....

   
 
 автор: cheops   (26.04.2005 в 13:02)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 06:20)
 

Через браузер не получится, так как браузер работает по 80 порту, а whois по 43. А кого определять хотите? Обычно подключаются либо на whois, который ответственнен за IP-адреса вашего региона, но если он не известен, то начинают с головного "whois.ripe.net" - смотрят, куда он отсылает - идут по указанному IP-адресу, смотрят куда следующий whois отфутболивает и так до тех пор пока к нужному не придёте.

   
 
 автор: Shorr Kan   (26.04.2005 в 14:00)   письмо автору
 
   для: cheops   (26.04.2005 в 13:02)
 

Но через сокеты ведь можно?

А кого определять - и впрям неизвестно... Почему-то всегда стремятся указать не свою страну. Причем все. Друг к другу в гости хотят, что ли...

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

=========================
Только что вспомнил, что видел у вас пример whois. Испробовал его. Выдало следующее:


% This is the RIPE Whois query server #1. 
% The objects are in RPSL format. 

% Note: the default output of the RIPE Whois server 
% is going to be changed soon. Your tools may need 
% to be adjusted. See 
% http: //www.ripe.net/db/news/abuse-proposal-20050331.html 
% for more details. 

% Rights restricted by copyright. 
% See http: //www.ripe.net/db/copyright.html 

inetnum: 192.168.0.0 - 192.168.255.255 
netname: IANA-CBLK-RESERVED1 
descr: Class C address space for private internets 
descr: See http: //www.ripe.net/db/rfc1918.html for details 
country: EU # Country is really world wide 
org: ORG-IANA1-RIPE 
admin-c: RFC1918-RIPE 
tech-c: RFC1918-RIPE 
status: ALLOCATED UNSPECIFIED 
remarks: Country is really worldwide 
remarks: This network should never be routed outside an enterprise 
remarks: See RFC1918 for further information 
mnt-by: RIPE-NCC-HM-MNT 
mnt-lower: RIPE-NCC-HM-MNT 
changed: rfc1918@ripe.net 20020129 
changed: hostmaster@ripe.net 20030526 
changed: hostmaster@ripe.net 20030904 
changed: hostmaster@ripe.net 20031014 
changed: ripe-dbm@ripe.net 20040422 
source: RIPE 

organisation: ORG-IANA1-RIPE 
org-name: Internet Assigned Numbers Authority 
org-type: IANA 
address: see http: //www.iana.org 
remarks: The IANA allocates IP addresses and AS number blocks to RIRs 
remarks: see http: //www.iana.org/ipaddress/ip-addresses.htm 
remarks: and http: //www.iana.org/assignments/as-numbers 
e-mail: bitbucket@ripe.net 
admin-c: IANA1-RIPE 
tech-c: IANA1-RIPE 
mnt-ref: RIPE-NCC-HM-MNT 
mnt-by: RIPE-NCC-HM-MNT 
changed: bitbucket@ripe.net 20040417 
source: RIPE 

role: RFC1918 Role 
address: Singel 258 
address: 1016 AB Amsterdam 
address: The Netherlands 
e-mail: rfc1918@ripe.net 
trouble: See http: //www.ripe.net/db/rfc1918.html 
admin-c: RFC1918-RIPE 
tech-c: RFC1918-RIPE 
nic-hdl: RFC1918-RIPE 
mnt-by: RFC1918-MNT 
changed: rfc1918@ripe.net 20020121 
changed: rfc1918@ripe.net 20021218 
source: RIPE 


Теперь такой вопрос.... И что все это означает? Ладно, допустим этот сервер о той стране в которой я живу - ни разу не слышал.... Где он показывает, куда мне теперь подключаться?

   
 
 автор: cheops   (26.04.2005 в 14:21)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 14:00)
 

Попробуйте вот сюда пойти
address: see http: //www.iana.org

Вообще алгоритм следования по whois серверам разбирался в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=580, вам вероятно будет интересно её почитать. Здесь мне не нравится строка
descr: Class C address space for private internets

Что означает, что данный диапазон из IP-адресов класса C предназначен для частного использования
remarks: This network should never be routed outside an enterprise

Это переводится как: эта сеть никогда не должна использоваться вне корпорации. Такое ощущение, что IP-адрес подделка, хотя я могу ошибаться.

   
 
 автор: Shorr Kan   (26.04.2005 в 14:33)   письмо автору
 
   для: cheops   (26.04.2005 в 14:21)
 

Смотря что считать корпорацией - мой провайдер предоставляет доступ к интернету через локальную сеть.

Тем не менее, не совсем ясно - и как же мне узнать, где нахожусь? :) Хотя бы, в какой я стране?

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=580
я прочитал. В целом - малоинформативно... Да и, откровенно говоря, я ее уже четвертый раз читаю - это направление мне нужно изучить.

На http://www.iana.org я полазил... Не нашел ничего, что хотя бы намекнуло бы мне как использовать их сайт в скрипте сверки айпи-страна.

   
 
 автор: Shorr Kan   (26.04.2005 в 19:55)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 14:33)
 

Вы не поверите! Я смог... Только два вопроса:

Эта штука выводит страны, как две/три буковки. А где можно найти соотношении таких букв - к полному названию страны?

Сейчас я ищу поле country. А как будет называться поле, если на текущем whois не будет информации? В той параллельной теме было сказано про "ReferralServer:" - это верно?

   
 
 автор: cheops   (26.04.2005 в 22:46)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 19:55)
 

> Эта штука выводит страны, как две/три буковки. А где можно
>найти соотношении таких букв - к полному названию страны?
Нужен список доменных имён первого уровня и их соответствие ru - РФ. ua - Украина и т.п. скорее всего там тоже соответствие.

> Сейчас я ищу поле country. А как будет называться поле,
>если на текущем whois не будет информации? В той
>параллельной теме было сказано про
>ReferralServer: - это верно?
Да вообще при штатной работе да, должен быть ReferralServer.

   
 
 автор: Shorr Kan   (26.04.2005 в 22:50)   письмо автору
 
   для: cheops   (26.04.2005 в 22:46)
 

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

202.108.250.243

проверил whois.ripe.net

Выдало:

202.108.250.243 - EU # Country is really world wide - 26 April 2005 22:20:26


И? как с этим работать? Никакой ReferralServer я там не нашел...

   
 
 автор: cheops   (26.04.2005 в 23:01)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 22:50)
 

А что ещё выдал?

   
 
 автор: Shorr Kan   (27.04.2005 в 02:08)   письмо автору
 
   для: cheops   (26.04.2005 в 23:01)
 

Ну скрипт - ничего... Он ничего и не должен был... а руками если туда пойти, то вот:


% This is the RIPE Whois query server #2.
% The objects are in RPSL format.
%
% Note: the default output of the RIPE Whois server
% is going to be changed soon. Your tools may need
% to be adjusted. See
% http://www.ripe.net/db/news/abuse-proposal-20050331.html
% for more details.
%
% Rights restricted by copyright.
% See http://www.ripe.net/db/copyright.html
inetnum:      0.0.0.0 - 255.255.255.255
netname:      IANA-BLK
descr:        The whole IPv4 address space
country:      EU # Country is really world wide
org:          ORG-IANA1-RIPE
admin-c:      IANA1-RIPE
tech-c:       IANA1-RIPE
status:       ALLOCATED UNSPECIFIED 
remarks:      The country is really worldwide.
remarks:      This address space is assigned at various other places in
remarks:      the world and might therefore not be in the RIPE database.
mnt-by:       RIPE-NCC-HM-MNT
mnt-lower:    RIPE-NCC-HM-MNT
mnt-routes:   RIPE-NCC-RPSL-MNT
changed:      bitbucket@ripe.net 20010529
changed:      bitbucket@ripe.net 20020625
changed:      hostmaster@ripe.net 20031014
changed:      bitbucket@ripe.net 20040422
changed:      bitbucket@ripe.net 20040504
source:       RIPE
organisation: ORG-IANA1-RIPE
org-name:     Internet Assigned Numbers Authority
org-type:     IANA
address:      see http://www.iana.org
remarks:      The IANA allocates IP addresses and AS number blocks to RIRs
remarks:      see http://www.iana.org/ipaddress/ip-addresses.htm
remarks:      and http://www.iana.org/assignments/as-numbers
e-mail:       bitbucket@ripe.net
admin-c:      IANA1-RIPE
tech-c:       IANA1-RIPE
mnt-ref:      RIPE-NCC-HM-MNT
mnt-by:       RIPE-NCC-HM-MNT
changed:      bitbucket@ripe.net 20040417
source:       RIPE
role:         Internet Assigned Numbers Authority
address:      see http://www.iana.org.
e-mail:       bitbucket@ripe.net
admin-c:      IANA1-RIPE
tech-c:       IANA1-RIPE
nic-hdl:      IANA1-RIPE
remarks:      For more information on IANA services
remarks:      go to IANA web site at http://www.iana.org.
mnt-by:       RIPE-NCC-MNT
changed:      bitbucket@ripe.net 20010411
source:       RIPE
Bold: Object type. 
Underlined: Primary key(s). 
Hyperlinks: Searchable Attributes.
 

   
 
 автор: Кузнецов М.В.   (27.04.2005 в 11:50)   письмо автору
 
   для: Shorr Kan   (26.04.2005 в 22:50)
 

> Никакой ReferralServer я там не
>нашел...
А его здесь (приведенный листинг) и не должно быть. Реферальный сервер выдается только в том случае, если тот whois-сервис, к которому Вы обращаетесь не отвественен за запрашиваемый Вами диапазон IP-адресов. А если все нормально и Вам выдается информация по IP-адресу, то никакие реферальные сервера не нужны.

   
 
 автор: Shorr Kan   (27.04.2005 в 21:27)   письмо автору
 
   для: Кузнецов М.В.   (27.04.2005 в 11:50)
 

Хорошо... Но этот листинг - он что показывает? Что у человека страна - EU. Я так понимаю, Что это Европа. Восхитительно. А нельзя ли поконкретнее? Практически на все айпишнички моя функция дала страну, а на пару, в том числе и такой - какую-то ерунду. Вот мне и нужно как-то эту ерунду перепроверить. Как?

   
 
 автор: Shorr Kan   (28.04.2005 в 04:03)   письмо автору
 
   для: Shorr Kan   (27.04.2005 в 21:27)
 

И поясните - что же такое EU # Country is really world wide ?

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 00:51)   письмо автору
 
   для: Shorr Kan   (28.04.2005 в 04:03)
 

Вообще эта фраза обозначает зону, не имеющую географической привязки. В нашем случае, это, правда, не так, просто райповский сервис не знает этого IP адреса... Вот он и написал, что "ему кажается, что Европа, а може быть все что угодно" :).

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 00:49)   письмо автору
 
   для: Shorr Kan   (27.04.2005 в 21:27)
 

Этот IP принадежит США.

OrgName:       Internet Assigned Numbers Authority 
OrgID:       IANA 
Address:       4676 Admiralty Way, Suite 330 
City:       Marina del Rey 
StateProv:       CA 
PostalCode:       90292-6695 
Country:       US

   
 
 автор: Shorr Kan   (29.04.2005 в 01:44)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 00:49)
 

Восхитительно... В таком случае, как это проверять? ripe не выдал ссылки на другой whois... Как быть?

Единственное, что приходит в голову, это если вижу такую строку - пересылать на другую функцию, которая с другим whois работать будет... Но я не знаю список whois'ов... Может быть, поделитесь такими, которые... ну как... Основные, что ли. Вот как ripe.net

Или тут лучше как-то иначе действовать?

   
 
 автор: korwin   (29.04.2005 в 04:17)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

Недавно столкнулись с похожей проблемой, вот пример(код не мой, просто нашел в файлах где он используется):

    $host = 'ip2city.ru';
    $path = "/ip2city.php?ip=".$ip;
 
 //соединение с хостом    
  $header = "GET $path HTTP/1.0\nHOST: $host\n\n";
  if(@$so = fsockopen($host, 80, &$errno, &$errstr, 30)) 

  {fputs($so, $header);
  while(fgets($so,2048)!="\r\n" && !feof($so));
  unset($buf);
  while(!feof($so)) @$buf.=fread($so,2048);
  fclose($so);}
 
    $info = explode("\n",$buf);
    $city = substr($info[0], (strpos($info[0],"=")) + 1); //удаляет все перед =
    $country = substr($info[4], (strpos($info[4],"=")) //удаляет все перед =
mysql_query("insert into stats_cities_now values(null, '$camp_id', '$city', '$country')");

   
 
 автор: korwin   (29.04.2005 в 04:22)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

согласен copy-paste "слегка" не аккуратный, пардон не уследил

   
 
 автор: Shorr Kan   (29.04.2005 в 08:44)   письмо автору
 
   для: korwin   (29.04.2005 в 04:22)
 

Угу... Но этот не лучше... Ответ на эти адреса, которые ripe.net так пометил, вот таков:

Информация о введенном IP адресе не найдена в базе.
Попробуйте другой адрес.

и

Город:
Страна:
Код страны:
Сеть: -
Описание сети:



Безумно информативно :(

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 10:46)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 01:44)
 

Дело в том, что ripe.net иногда выкидывает вот такие экивоки, что про некоторые IP, не лежащие в его зоне он говорит, что они не имеют географической привязки. И не дает при этом ссылок на реферальные сервера (потому что если он говорит, что нет геопривязки, то ни о каких рефералах речь не идет).
Почему он так делает - вопрос не к нам, в качестве выхода можно начинать пользоваться сервисом
whois.arin.net
который весьма исправно дает ссылки на реферальные сервера, если IP-адрес не принадлежит к тому диапазону, за который он отвечает.

   
 
 автор: Shorr Kan   (29.04.2005 в 11:16)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 10:46)
 

Великолепно! Спасибо большое, он действительно прикидывается работающим... Но вот что он мне выдал:


OrgName: Asia Pacific Network Information Centre
OrgID: APNIC
Address: PO Box 2131
City: Milton
StateProv: QLD
PostalCode: 4064
Country: AU

ReferralServer: whois: //whois.apnic.net



Страна AU... А если он определил страну, то зачем выдале реф-сервер?

   
 
 автор: Shorr Kan   (29.04.2005 в 12:39)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 11:16)
 

Но я проверил свой айпи... неверно. Однако, по реферальному серверу пошел - верно. Я попытался сделать следование... но что-то не получается... Вы не могли бы помочь? Вот моя попытка:



<?

$ip
='xxx.xxx.xxx.xxx';
$server="whois.arin.net";
function 
whois($server,$ip) {
$sock fsockopen ($server,43,$errno,$errstr);
      
    if (!
$sock) {
      echo(
"$errno($errstr)");
      return;
    }
    else {
      
fputs ($sock$ip."\r\n");
      
      while (!
feof($sock)) {
           
$line=str_replace(":",":      ",fgets ($sock,128));
        
           
           
$first=substr($line,0,+strlen("country:"));
           
$f_ref=substr($line,0,+strlen("ReferralServer:"));
           if(
$first=="Country:" or $first=="country:")
           {
$line_ok=$line;}
           if(
$f_ref=="ReferralServer:" or $f_ref=="referralserver:")
           {
$ref=explode("//",$line);}
        
        }
    }
    
fclose ($sock);
if(!empty(
$ref)){
$ref_server=explode(":",$ref[1]);
whois(trim($ref_server[0]),$ip);
}else{return 
$line_ok;}
$country=whois($server,$ip);
print 
"!".$country;
?>

   
 
 автор: Shorr Kan   (29.04.2005 в 12:43)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 12:39)
 

Так, изменил в конце на
<?
if(!empty($ref)){
$ref_server=explode(":",$ref[1]);
$country=whois(trim($ref_server[0]),$ip);
return 
$country;
}else{return 
$line_ok;}
}
$country=whois($server,$ip);
print 
"!".$country;
?>


Вроде стало все верно... Но верно ли это?

   
 
 автор: Кузнецов М.В.   (29.04.2005 в 13:12)   письмо автору
 
   для: Shorr Kan   (29.04.2005 в 11:16)
 

> Страна AU... А если он определил страну, то зачем выдале
>реф-сервер?
Значит, этот диапазон IP не его. Т.е. он про него что-то знает, этот IP есть в базе, но так как не тот диапазон, и он сомневается в правильности данных, он предлагает обратиться к реферальному серверу для получения более точных сведений.

   
 
 автор: Shorr Kan   (29.04.2005 в 13:37)   письмо автору
 
   для: Кузнецов М.В.   (29.04.2005 в 13:12)
 

Ясно, спасибо. Надеюсь, что я все верно сделал.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования