Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/111: Рейтинг темы: голосов - 111, средняя оценка - 4.95
 Аватар для STRATEG
1174 / 480 / 83
Регистрация: 04.03.2010
Сообщений: 1,019

О том как узнать внешний IP

06.07.2010, 21:27. Показов 21371. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я решил затронуть эту тему по одной простой причине,так как в интернете если ввести в поиске "Как узнать свой IP" конечно выдается много ссылок,но почему то многие так и не узнают то что хотели пройдя по всем ссылкам(Дабы там большие и красивые функции,выдающие Локальный IP. Например: Winsock1.LocalIP

Начнем с того что IP может быть нужен в разных целях для:
-RAdmin в добрых целях
-Злых Троянов которие пишут новички,и у них сразу же возникает вопрос,Как узнать IP жертвы?
-Получение общей информации о компьютере
- и многие другие цели

Все оказалось очень просто.
Алгоритм:Мы посылаем запрос на сервер показывающий наш IP через Сокет,в ответ получаем долгожданный IP и нас радует то что это уже не локальный,а как мы и желали Внешний адрес.

Теперь рассмотрим реализацию на Visual Basic

Для начала нужно подключить библиотеку Microsoft Winsock Conrol 6.0.
В меню Project\Components добавьте Microsoft Winsock Conrol 6.0

Поместим на форму следующие компоненты:
1)CommandButton
Свойство Caption = Получить IP
2)TextBox
Свойство Name = IP
3)Winsock
Разместите их примерно как у меня
Название: VB.JPG
Просмотров: 2180

Размер: 6.1 Кб

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'Введем новую переменную
Dim HTMLCode As String 'переменная для хранения кода страницы
 
'{Пишем код в Событие,которое генерируется при нажатии на кнопку}
Private Sub Command1_Click()
    Winsock1.RemotePort = 80                     'устанавливаем порт сервера 80
    Winsock1.RemoteHost = "ippages.com"    'Хост
    Winsock1.Connect                               'Подключаемся
End Sub
 
'{=====Событие генерируется при закрытии Канала связи======}
Private Sub Winsock1_Close()            
Form1.Caption = "Not Connect" 'Просто сообщаем о том что не подключены
Winsock1.Close
End Sub
 
'{=====Событие генерируется при подключении======}
Private Sub Winsock1_Connect()      
   Form1.Caption = "Connected"      'Подключены
   'Посылаем запрос на сервер  выдающему наш IP
   Winsock1.SendData "GET " + "/simple/" + " HTTP/1.0" + Chr(10) + Chr(10)
End Sub
 
'{=====Событие генерируется когда нам приходят данные======}
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData HTMLCode                   'Получаем данные и помещаем их в переменную
    IP.Text = CutIP(HTMLCode)
End Sub
 
'А вот собственно и функция "вытягивания" IP  из HTML
Function CutIP(HTML As String) As String
Dim p1 As Integer
    p1 = InStr(HTML, "Content-Type: text/html")
    CutIP = Trim(Mid(HTML, p1 + 27, Len(HTML) - p1 - 23))
End Function
Собственно ничего сложного нет,а результат есть. Вы можете использовать другие сервера которые показывают ваш IP либо в скрытом,либо в открытом виде в Страничке.

Так же можно получить IP с любых других сайтов и вырезать его.Рассмотрим на примере сайта IP-whois.net.
Работая с этим сайтом,вы увидите что страничка может приходить несколькими пакетами.Мы и рассмотрим как можно проверить собрали ли мы всю страничку,если нет то как дописывать.

Немного подредактируем прошлый проект
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'добавляем глобальную переменную
Dim PocketLen  As Integer ' переменная для хранения размера страницы
 
...
'поменяем Хост
Winsock1.RemoteHost = "ip-whois.net"    'Хост
...
'поменяем запрос
Winsock1.SendData "GET " + "/ip.php" + " HTTP/1.0" + Chr(10) + Chr(10)
...
'перепишим код в событии которое возникает при получении данных
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Temp As String
   PocketLen = PocketLen + bytesTotal      'увеличиваем суммарный объем страницы
   Winsock1.GetData Temp                   'Получаем данные и помещаем их в переменную
   HTMLCode = HTMLCode + Temp              'Дописываем пакет к нашей страницы
   'страница весит около 7225 байт.Проверяем вся ли страница принята
   'и только тогда в Текстовое поле помещаем наш IP
   If PocketLen > 7000 Then IP.Text = CutIP(HTMLCode)
  'End If
End Sub
 
'Перепишим функцию GetIP
Function CutIP(HTML As String) As String     'В качестве параметра принимаем код страницы
Dim p1, p2 As Integer
    p1 = 1
    p1 = InStr(HTML, "Ваш IP:")              'ищем начало нужной строки с IP
    If p1 = 0 Then                           'если не нашли то сообщим о неудаче
    MsgBox "Не удалось получить IP"
    Else
    HTML = Mid(HTML, p1, Len(HTML) - p1)     'Скопируем выражение "Ваш IP:" и все что стоит после него
    p2 = InStr(HTML, "</h2>")                'Ищем конец по тегу
    'Возвращаемое значение функции и будет наш IP,на всякий случай сделал Trim
    CutIP = Trim(Mid(HTML, 8, p2 - 8))
    End If
End Function
Исходник программы:Получение своего IP.rar
8
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2010, 21:27
Ответы с готовыми решениями:

Как узнать внешний IP
Делал в VS' 10 Вот код: Public Class Form1 Dim HTMLCode As String Dim PocketLen As Integer Private Sub...

Как узнать внешний IP
Есть много обсуждений по этому вопросу, но единственное решение вытащить из веб-страницы (к примеру 2ip.ru) кусок текста. Мне такое решение...

ноут как узнать внешний ip
Всем добрый вечер. Ситуация такова. Пару дней назад у меня украли ноутбук. Сейчас он появился в VPN сети. Как узнать ВНЕШНИЙ IP???

23
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
27.04.2011, 06:47
Лучший ответ Сообщение было отмечено как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от STRATEG
:Речь идёт не о том, что хочется увидить свой IP, а о том, что его нужно получить и использовать в своей программе. Использовать компонент WebBrowser можно, но не нужно. Не так сложно делается это на сокетах и при этом не валяется просто так "браузер" целый.
Ну в названии темы слово "узнать" - мой код вполне с этим справляется! Хотя Вы правы, таскать с собой дополнительные компоненты в том случае, когда можно обойтись и без них - это дурной тон. По этому только API!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Const scUserAgent = "IP_API_Loader"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.ippages.com/simple/"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
     Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
    'Сщздаем буфер для хранения информации
    sBuffer = Space(20)
    'Соединяемся с интернет
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    'Заходим на нужный сайт с определителем IP
    hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
    'Считываем первые 20 байт информации
    InternetReadFile hFile, sBuffer, 20, Ret
    'Закрываем соединения
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    'Отображаем Ip
    Me.AutoRedraw = True
    Me.Print "Ваш IP - " & sBuffer
End Sub
Вот так просто и элегантно, а главное экономим на парсере, этот код сразу выдает текст без служебных тегов HTML.
3
0 / 0 / 0
Регистрация: 15.09.2010
Сообщений: 12
31.08.2011, 22:57
ip-whois частенько подвисает, я пользуюсь http://speed-tester.info
0
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 4
11.01.2012, 14:39
Ошибка
0
Заблокирован
27.04.2012, 09:48
Мне кажется просто сделать запрос на internet.yandex.ru получить исходный код страницы и сохранить во временный файл, далее просто выдернуть из временного файла строчку с IP адресом вставить в текстовое поле и быть счастливым ))))

<STRATEG:И зачем ещё и файлы трогать, если после записи в него, опять идёт вытягивание IP из кода?. Совершенно ненужные действия.>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2012, 09:48

Как узнать внешний IP-адрес
Доброе Время суток. Есть программа для Рекконекта интернет соединений. В ней добавил button для проверки ip через сайт 2ip.ru ...

Как узнать внешний IP адрес
Доброго всем вечера(ночи), мне необходимо разобраться каким образом можно получить внешний IP адрес компьютера, в моем случае ADSL, то...

Как узнать внешний IP адрес?
Как узнать внешний IP адрес с помощью сайта www.getip.com? Получаем html код страницы: TextBox1.Text = (New...

Как узнать о том, что клиент дисконектнулся от сервера?
Здравствуйте. Делаю сервер. В нем есть подсчет пользователей онлайн. Прибавить пользователя, при подключении к сокету легко, но вот как...

Как узнать внешний IP другого компьютера
Здравствуйте всем! Если сможете - помогите, пожалуйста. Как можно узнать IP адрес другого компьютера? Причем этот IP высылался мне на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Закрытая тема Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru