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

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

06.07.2010, 21:27. Показов 21007. Ответов 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
Просмотров: 2175

Размер: 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
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 9
07.07.2010, 17:40
у меня пишет что ошибка на строке "p2 = InStr(p1, HTML, "</h2>")" , ошибка : Invalid Procedure call of argument
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
07.07.2010, 18:07
У меня скаченный исходник и ошибку
0
 Аватар для STRATEG
1174 / 480 / 83
Регистрация: 04.03.2010
Сообщений: 1,019
07.07.2010, 19:49  [ТС]
Приношу свои извенения, за небольшую спешку которая привила к таким вот вопросам.

Дело в том что сравнивая код страницы Сниффера и то что получилось у меня в переменной HTMLCode
я пришел к выводу что много не хватает. Вся страница приходит в некоторых случаях одним пакетом,а в других парой тройкой пакетов. Поэтому p1 не находит нужной подстроки,получает 0,и этот аргумент является ошибочным,и возникает <Invalid Procedure call of argument>


Статья проредактированна
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
07.07.2010, 22:06
Лучший ответ Сообщение было отмечено как решение

Решение

STRATEG, при всем уважении - зачем столько парсинга, когда есть нормальные сервисы, показывающие твой IP без лишней информации? Например http://www.ippages.com/simple/
4
 Аватар для STRATEG
1174 / 480 / 83
Регистрация: 04.03.2010
Сообщений: 1,019
08.07.2010, 11:26  [ТС]
Ок )) Спасибо пригодиться на будующее, на первой страничке яндекса такого сервиса и небыло,а дальше как то не смотрел конечно и этот сервис посылает как обычно не только IP но и служебную информацию.Браузер её читает для себя,а мы не браузер,поэтому придется тоже вырезать это дело.
0
datarecovery
21.07.2010, 15:10
Я подумал, что я хотел бы зайти посмотреть, что происходит. Я читал этот обзор до и думал, что я хотел бы вернуться к посмотреть, что нового. Выглядит хорошо.

С уважением,
Data Recovery Software
http://www.datadoctor.biz
Anderis
05.09.2010, 19:16
А если попробовать просто Winsock1.LocalIP
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
05.09.2010, 19:27
Цитата Сообщение от Anderis Посмотреть сообщение
А если попробовать просто Winsock1.LocalIP
то он тебе и покажет твой локальный IP, который на сетевке светится.
__________________________________
Посмотри пожалуйста на название статьи. Здесь описано как узнать внешний адрес,а не локальный. И написана она была потому,что многим нужен внешний, а в интернете все варианты как твои, которые дают локальный адрес. Тоесть то ,по чему можно найти компьютер в сети интернет, а не локальной сети.
0
ОУН
17.12.2010, 17:28
Ребят а у меня в проге например виншок уже задействован и занят другим а ИП узнать нужно как быть?

<STRATEG:Можно поместить второй компонент на форму.>
sniferaa
22.12.2010, 06:41
А если вдруг Инет не подключен?

<STRATEG:К чему такие вопросы, если и так понятно что ничего работать не будет. Тогда какой смысл узнавать IP? Оффлайн это не сделать.>
 Аватар для GreenPanda
178 / 29 / 3
Регистрация: 29.08.2010
Сообщений: 228
06.01.2011, 15:07
а можно это без winsock реализовать ?

<STRATEG:Можно. Получить код страницы можно кучей способов. Тут показано на примере Winsock.>

Добавлено через 3 часа 21 минуту
Цитата Сообщение от mischka Посмотреть сообщение
а можно это без winsock реализовать ?

<STRATEG:Можно. Получить код страницы можно кучей способов. Тут показано на примере Winsock.>
а не подскажитье как имено ??

<STRATEG:Примеров как получить страницу из интернета много. Компонент "браузер", API, Компонент-AVT и прочие сторонние компоненты. Можно это "нагуглить".>


P.S.
При возникновении подобных вопросов обращаться ко мне по любым доступным контактам


Добавлено через 16 часов 57 минут
спс будем пробывать и искать
0
Freshs
13.01.2011, 22:12
интересно спасибо жаль только на windows 7 не работает.
 Аватар для GreenPanda
178 / 29 / 3
Регистрация: 29.08.2010
Сообщений: 228
14.01.2011, 01:54
кому интересно вот зделал но он опрашивает сайт и берет там IP
Вложения
Тип файла: rar IP.rar (6.8 Кб, 170 просмотров)
0
Freshs
14.01.2011, 16:40
Цитата Сообщение от mischka Посмотреть сообщение
кому интересно вот зделал но он опрашивает сайт и берет там IP
если честно фигня полная имхо где кнопка получить?
не доработанная прога.
borja
15.01.2011, 01:12
Жаль,
мне другое нужно...
как узнать ип,порт шлюза прокси
допустим можно посмотреть в настройках или через трасер,но как это можно сделать из своей проги ?

Добавлено через 4 часа 13 минут
Пардон,похоже нашел здесь

http://www.dbpro.cz/en/ipconfig.asp
 Аватар для GreenPanda
178 / 29 / 3
Регистрация: 29.08.2010
Сообщений: 228
21.01.2011, 01:32
Цитата Сообщение от Freshs Посмотреть сообщение
если честно фигня полная имхо где кнопка получить?
не доработанная прога.
а зачем кнопка если она автоматически показывает Ip
0
 Аватар для _Лёша_
388 / 377 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
12.02.2011, 17:22
[QUOTE=ОУН;1212158]Ребят а у меня в проге например виншок уже задействован и занят другим а ИП узнать нужно как быть?

можно сделать так:

Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
Dim ipq As IPAddress = ipHostInfo.AddressList(0)
For Each ipq In ipHostInfo.AddressList
combobox2.Items.add(ipq.ToString())

ты получишь внешний и внутренний, а потом выбор.

<STRATEG:Можно второй компонент кинуть.>
0
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
22.03.2011, 14:50
А почему у меня на 2010 студии, выдает ошибку что переменная не объявлена Winsock1? хотя библиотеку Microsoft Winsock Conrol 6.0. я подключил

<STRATEG:Писался пример под VB6. Мало подключить библиотеку, нужно бросить компонент на форму>
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
24.04.2011, 21:38
CАмый простой способ на форму положить WebBrowser1 размером 2х3 см шелкнуть по форме и в открывшейся процедуре написать 1 строчку:

Visual Basic
1
2
3
Private Sub Form_Load()
WebBrowser1.Navigate "http://ip-whois.net/img_ip1.php"
End Sub
И всё! Можно запускать и увидите свой IP.

<STRATEG:Речь идёт не о том, что хочется увидить свой IP, а о том, что его нужно получить и использовать в своей программе. Использовать компонент WebBrowser можно, но не нужно. Не так сложно делается это на сокетах и при этом не валяется просто так "браузер" целый. >
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2011, 21:38
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Закрытая тема Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru