Как узнать внешний IP адрес?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Есть сайт http://www.ipsee.ru/ где отображается текущий внешний IP адрес. Как этот адрес передать под управление Delphi, ну или по-русски - как средствами дельфи узнать этот адрес? Чтобы потом можно было им оперировать в самой программе.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
demon416
Сообщения: 178
Зарегистрирован: 30 янв 2006, 14:03
Откуда: kirovskoe

можно пропарсить страницу
но прийдется переделывать если сайт переделается
ака хинт: коментируйте код, самим же легче будет разобраться ;)
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

[syntax=Delphi]
uses
WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
[/syntax]
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Функция классная, спасибо, только она выдает локальный IP )))))
А по поводу переделать сайт - это навряд ли )))

Есть еще предложения???
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Узнать внешний IP можно только снаружи.
Т.е. если я сижу в квартире, и хочу узнать как выглядит дом снаружи мне надо либо самому выйти и посмотреть, либо кому-нибудь позвонить, кто мог бы мне рассказать.
Как ни крути, придется обратиться к какому-нибудь внешнему сервису.
Как было справедливо замечено ipsee использовать не очень хочется, так как они в олюбой момент могут изменить дизайн своей страницы (например, добавить туда больше рекламы), и тогда "выкусить" оттуда свой IP-щник будет не просто.
Можно для этой цели создать свой собственный сервис, наприер, Dr_Grizzly@narod.ru/ipview. HTML страница на сервере должна содержать только

Код: Выделить всё

<!--#echo var="REMOTE_ADDR"--> 
(Ну и хостер должен поддерживать SSI.)
alexander.spb
Сообщения: 22
Зарегистрирован: 24 мар 2009, 13:25
Откуда: St.Petersburg

свой внешний можно следующим способом:

>traceroute http://www.google.ru - для *nix
>tracert http://www.google.ru -- для windows

в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

&quot писал(а):в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.
Это не правда.
Во-первых, Your IP Address Is 89.113.78.239, а трэйс такой:

Код: Выделить всё


  1    <1 мс    <1 мс    <1 мс  192.168.10.1
  2     6 ms     1 ms     1 ms  10.180.68.1
  3     2 ms     2 ms     2 ms  192.168.249.13
  4     1 ms    <1 мс    <1 мс  192.168.248.237
  5     1 ms     1 ms     1 ms  gw34.zet [192.168.254.225]
  6     1 ms     1 ms     1 ms  89.113.[B]209.33[/B]
Во-вторых, в следующий момент трейс может быть таким:

Код: Выделить всё

 1    <1 мс    <1 мс    <1 мс  192.168.10.1
 2     2 ms     2 ms     2 ms  10.28.196.1
 3     2 ms     2 ms     2 ms  10.255.255.57
 4     1 ms    <1 мс     1 ms  10.255.255.21
 5     1 ms     1 ms     1 ms  10.255.255.105
 6     1 ms     1 ms     1 ms  10.255.255.89
 7   192 ms   203 ms     1 ms  10.255.255.97
 8     1 ms     1 ms     1 ms  10.255.255.4
 9   108 ms     1 ms   205 ms  border.cifracom.ru [195.189.80.33]
Т.е. у одной коннекции может быть один IP, а у другой - свой. Причём опять же не 195.189.80.33.
Даже самый дурацкий замысел можно воплотить мастерски
alexander.spb
Сообщения: 22
Зарегистрирован: 24 мар 2009, 13:25
Откуда: St.Petersburg

согласен ))
только мне не понятно, почему я не прав.
Может потому, что для того комп-ра, который Gateway, печатается только внутренний IP ?
oStWay
Сообщения: 1
Зарегистрирован: 29 мар 2009, 20:17

Naeel Maqsudov писал(а): Можно для этой цели создать свой собственный сервис
Зачем же, всё уже давно создано ;

http://www.whatismyip.com/automation/n09230945.asp

Код: Выделить всё

var 
    ip : string;
begin
    ip := idHTTP.Get('http://www.whatismyip.com/automation/n09230945.asp');
    ...
end;
...например.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Ай маладца!!! Огромное СПАСИБО ;) Реально выручил ))))))))
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить