Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Модуль Whois, определение города и оператора связи по ip-ку. [D7, WinXP]


YurikGL ©   (2010-05-11 10:44:00) 

Может кто делал? Что бы можно было для набора ip-в вычислить город и оператора связи. Ну или хотя бы просто вернуть текст аналогичный возвращаемому службой http://www.ripe.net/perl/whois


YurikGL   (2010-09-06 12:18:00) [1]

В итоге получилось как-то так.

dst: TADODataSet;
dsc: TADOCommand;

...
в dst лежит список ip-в

заполнение поля st данными, возвращаемыми ripe-м

dst.First;
dsc.CommandText:='update t set st=:st where id=:id';
try
while not dst.Eof do begin
 st:=IdHTTP1.Get(' http://lab.db.ripe.net/whois/search?source=ripe&query-string='+dst.fieldbyname('ip').AsString);
 dsc.Parameters.ParamByName('st').Value:=st;
 dsc.Parameters.ParamByName('id').Value:=dst.fieldbyname('id').value;
 dsc.Execute;
 dst.Next;
 Application.ProcessMessages;
 Memo1.Lines.Add(dst.fieldbyname('id').AsString)
                   end;
except
  on e:Exception do begin
     ShowMessage(dst.fieldbyname('id').AsString+'|');
                    end
end;


определение провайдера (для моих нужд сошло и так)

dst.First;
dsc.CommandText:='update t1 set prov=:prov where id=:id';
try
while not dst.Eof do begin
 prov:='';

 if pos('Ufanet',dst.fieldbyname('st').asstring)>0 then prov:=Prov+' Уфанет';

 if pos('Golden Telecom',dst.fieldbyname('st').asstring)>0 then prov:=Prov+' ГолденТелеком';
//много строчек с провайдерами
....

 if prov='' then prov:='неизвестен.';

 dsc.Parameters.ParamByName('prov').Value:=prov;
 dsc.Parameters.ParamByName('id').Value:=dst.fieldbyname('id').value;
 dsc.Execute;
 dst.Next;
 Application.ProcessMessages;
 Memo1.Lines.Add(dst.fieldbyname('id').AsString)
                   end;
except
  on e:Exception do begin
     ShowMessage(dst.fieldbyname('id').AsString+'|');
                    end
end;


Gu   (2010-09-03 19:29:00) [2]

похожая проблема: http://www.delphimaster.ru/cgi-bin/forum.pl?id=1283385235&n=4


Gu   (2010-09-03 19:20:00) [3]

примерная реализация

кидаем на форму edit1,button,memo,компоненты XMLDocument (с вкладки Internet) и JvHttpUrlGrabber (из набора jedi), в свойствах JvHttpUrlGrabber1 меняем OutputMode на omStream

в обработчике кнопки пишем

memo1.clear;
JvHttpUrlGrabber1.Url:=' http://lab.db.ripe.net/whois/search?source=ripe&query-string='+edit1.text;
memo1.lines.add('IP: '+edit1.text);
JvHttpUrlGrabber1.Start;

в обработчике JvHttpUrlGrabber1DoneStream

var s:string;c:ixmlnodelist;x:ixmlnode;
begin
Try
XMLDocument1.LoadFromStream(stream);
XMLDocument1.Active:=true;s:='';
c:=XMLDocument1.DocumentElement.ChildNodes; // получаем структуру
x:=c.Get(2); // спускаемся по веткам
c:=x.ChildNodes;x:=c.Get(0);
c:=x.ChildNodes;x:=c.Get(3);
c:=x.ChildNodes;x:=c.Get(0);
if x.Attributes['value']null then s:=' (диапазон: '+x.Attributes['value']+', имя сети: ' else s:=s+'?';
x:=c.Get(1);
if x.Attributes['value']null then s:=s+x.Attributes['value']+', пояснение: ' else s:=s+'?';
x:=c.Get(2);
if x.Attributes['value']null then s:=s+x.Attributes['value']+', страна: ' else s:=s+'?';
x:=c.Get(3);
if x.Attributes['value']null then s:=s+x.Attributes['value']+')' else s:=s+'?';
memo1.Lines.Add(s);
XMLDocument1.Active:=false;
except
memo1.lines.add('error');
end;
JvHttpUrlGrabber1.Stop;


YurikGL   (2010-05-13 20:09:00) [4]

Информации Ripe-а мне вполне хватает....
Покурив http://labs.ripe.net/content/ripe-database-api-documentation#QueryAPI-search выяснил, что запросы типа http://lab.db.ripe.net/whois/search?source=ripe&query-string=94.41.9.69возвращают достаточно внятную xml-ку
ip-к можно подставлять любой (из зоны ripe-а).

Осталась сущая малось.... научиться загружать xml-ку и парсить.

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


Anatoly Podgoretsky   (2010-05-12 10:11:00) [5]

Кстати и та приведеная в RIPE информация, тоже уже не верная, просто ее не исправляют в WHOIS, на самом деле netname уже Elion и местонахождения уже Таллин


Anatoly Podgoretsky   (2010-05-12 09:32:00) [6]

> YurikGL  (12.05.2010 06:33:09)  [9]

Кстати по поводу "не в Эстонии", это сейчас, а я писал, что находился в
Калифорнии, в городе Санта Фе, не покидая Эстонию.
Но если это устраивает, да ради бога. Тогда ICS в руки + RFC + RIPE Whois
Documentation


Anatoly Podgoretsky   (2010-05-12 09:28:00) [7]

> YurikGL  (12.05.2010 06:33:09)  [9]

Сейчас в Эстонии. но это не моя запись, эта запись относится к netname:
VIRUNET
И живу я по другому адресу (а вопрос про Город), в whois networksolution
совсем другие данные, только их посмотреть вам нельзя, у меня приватная
регистрация. То есть RIPE своей роли не смог выполнить.


YurikGL   (2010-05-12 06:33:00) [8]

Еще раз повторяю. Мне не нужны доменные имена. Мне нужно "где находится вот этот вот Ip-к" доменных имен у меня вообще нет.
Для ip-ка 83.166.49.48 (резолвится на podgoretsky.com) получаем информацию. Есть основания утверждать, что ip-к 83.166.49.48 находится не в Эстонии?

inetnum:         83.166.49.0 - 83.166.51.255
netname:         VIRUNET
descr:           Narva-2 XDSL
country:         EE
admin-c:         VNET1-RIPE
tech-c:          VNET1-RIPE
status:          ASSIGNED PA
mnt-by:          MNT-VNET
mnt-lower:       MNT-VNET
mnt-routes:      MNT-VNET
source:          RIPE # Filtered

role:            VNET NOC
address:         Uus tn. 2
address:        41533 Jo'hvi
address:         Estonia
phone:           +372 33 70146 begin_of_the_skype_highlighting              +372 33 70146      end_of_the_skype_highlighting
phone:           +372 53 411 511 begin_of_the_skype_highlighting              +372 53 411 511      end_of_the_skype_highlighting
fax-no:          +372 33 71908
admin-c:         TL435-RIPE
tech-c:          AN1246-RIPE
nic-hdl:         VNET1-RIPE
mnt-by:          MNT-VNET
abuse-mailbox:   abuse@vnet.ee
source:          RIPE # Filtered

% Information related to '83.166.32.0/19AS3249'

route:           83.166.32.0/19
descr:           EE-VIRUNET-20040525
origin:          AS3249
mnt-by:          ESTPAK-MNT
source:          RIPE # Filtered


Anatoly Podgoretsky   (2010-05-11 13:06:00) [9]

> Anatoly Podgoretsky  (11.05.2010 12:55:07)  [7]

Вот whois по мне, у моего регистратора
http://www.networksolutions.com/whois-search/podgoretsky.com
Попробуй определить город и оператора
То же по RIPE NCC, там вообще чушь


Anatoly Podgoretsky   (2010-05-11 12:55:00) [10]

> YurikGL  (11.05.2010 12:35:06)  [6]

RIPE NCC содержит информацию по сетям и делает поиск по NETNAME и по ИП
Во всяком случае он не смог сделать поиск по моей сети и выдал неверную
информации.
А точную информацию об моей сети/домене можно получить с NIC


YurikGL   (2010-05-11 12:35:00) [11]


> WhoIS работает исключительно с доменами, это всего лишь
> регистрационная
> база.
> А как ты запрашиваешь по имени или по ИП не важно.

Может я что то не своими именами называю...
http://www.ripe.net/perl/whois
ввожу ip-к. Например 81.30.200.38 Этому ip-ку не соответствуют никакие доменные имена (по крайней мере, не должны)
Он выдает (в т.ч.)
% Information related to '81.30.192.0 - 81.30.201.255'
....
person:          Nikolay Triakin
address:         ZAO "Delovaja set"
address:         902,17 Curupa str.
address:         Ufa Russia
phone:           +7 3472 900400 begin_of_the_skype_highlighting              +7 3472 900400      end_of_the_skype_highlighting
fax-no:          +7 3472 900400
nic-hdl:         NT206-RIPE
source:          RIPE # Filtered


Вот мне и нужно такие запросы составлять автоматизированно в больших количествах. А в идеале еще и "правильно" вытаскивать город и оператора связи (если это технически возможно).


Anatoly Podgoretsky   (2010-05-11 12:28:00) [12]

> YurikGL  (11.05.2010 12:11:04)  [4]

WhoIS работает исключительно с доменами, это всего лишь регистрационная
база.
А как ты запрашиваешь по имени или по ИП не важно.
Тебе нужна другая база, ИП географическая, но обычно это тайна, ее ведут
провайдеры и шареварщики, для себя. Я же говорил, что я был в Калифорнии,
что доказывает бессмысленность базы(баз) Whois - это все обман. Касательно
моей записи в Whois, то сейчас там все правильно, никаких Калифорний и
Таллинов.


YurikGL   (2010-05-11 12:11:00) [13]


> Оставь надежду. Во первых там там написано то, что захотел
> регистрант,
> например я одно время находился в Калифорнии, а потом в
> Таллине, что не
> соответствует действительности и так же по другим полям.
>  Во вторых можно
> ничего не найти, например мой домен не находит.

Мне нужно исключительно по Ip-м. Домены меня не интересуют.  А у ip-в достоверность выше.
Цель - анализ адекватности голосов на сайте. Не точный, не идеальный, но хоть какой-то.


YurikGL   (2010-05-11 12:09:00) [14]


> Ну а в третьих WHOIS
> компонент много написано, попробуй поискать на Торри.

Там из три.
Одно с первого же пинка не запустилось, одно платное, а еще одно показывает географическое расположение.
Будут копать.

Но если есть готовые решения - буду рад


Anatoly Podgoretsky   (2010-05-11 11:54:00) [15]

> Anatoly Podgoretsky  (11.05.2010 11:52:01)  [1]

Ну и ты наверно догадываешься, что я вхожу в The RIPE NCC Service Region


Anatoly Podgoretsky   (2010-05-11 11:52:00) [16]

> YurikGL  (11.05.2010 10:44:00)  [0]

Оставь надежду. Во первых там там написано то, что захотел регистрант,
например я одно время находился в Калифорнии, а потом в Таллине, что не
соответствует действительности и так же по другим полям. Во вторых можно
ничего не найти, например мой домен не находит. Ну а в третьих WHOIS
компонент много написано, попробуй поискать на Торри.


Наверх

Титульная страница Поиск, карта сайта Написать письмо