Тема: VBS: Помогите распарсить IP address на http://www.whoer.net/
Помогите, плз, как с http://www.whoer.net/ получить значение своего IP адреса ?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: Помогите распарсить IP address на http://www.whoer.net/
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Помогите, плз, как с http://www.whoer.net/ получить значение своего IP адреса ?
Помогите, плз, как с http://www.whoer.net/ получить значение своего IP адреса ?
Но в VBS не силен, поэтому только часть кода которая берет сохраненную ВЕБ-страницу, и вытаскивает IP.
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objRegExp = CreateObject("VBScript.RegExp")
Set File = FSO.GetFile("saved_page.html")
Set TextStream = File.OpenAsTextStream(1)
objRegExp.Pattern = ".*class=.ipadotted..([0-9.]+).*"
Str = vbNullString
While Not TextStream.AtEndOfStream
sss = TextStream.ReadLine()
If objRegExp.Test(sss) Then
sss = objRegExp.Replace(sss,"$1")
MsgBox sss
End If
Wend
TextStream.Close
Вот если бы на Jscript, я бы полный пример накатал.
Если же вам просто нужет ваш IP и использование http://www.whoer.net/ не обязательно, то может лучше так:
Set oHTML = CreateObject("MSXML2.XMLhttp")
oHTML.Open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False
oHTML.Send
WScript.Echo "" & oHTML.ResponseText
Ищите подстроку вида
<div id="remote_addr" class="ipadotted">IP в точечной нотации</div>
Из нее можно "выудить" IP в точечной нотации.
Другой вариант. вернуть oHTML.responseXML и обработать его, рассматривая через призму DOM. Я не знаю, как обстоят дела в VBScript с этим. На JScript это было бы примерно так:
var xml = xmlhttp.ResponseXML;
var remote_addr = xml.getElementById('remote_addr').innerHTML;
Если ресурс не важен.
Set oHTML = CreateObject("MSXML2.XMLhttp")
oHTML.Open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False
oHTML.Send
myip = oHTML.ResponseText
Essential, ровно то же в посте #2.
вернуть oHTML.responseXML и обработать его, рассматривая через призму DOM
Так ведь для html страницы oHTML.responseXML вернет пусто ! Пробовал много раз.
objRegExp.Pattern = ".*class=.ipadotted..([0-9.]+).*"
интересно, а что означают здесь "class" и "ipadotted"- чей-то не помню таких в RegExp ?
Касательно кода :
Код:
Set oHTML = CreateObject("MSXML2.XMLhttp") oHTML.Open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False oHTML.Send WScript.Echo "" & oHTML.ResponseText
Часто простое возвращение oHTML.ResponseText дает VBS строку и + в конце ее еще один байт ( вроде как, символ перевод строки ) , как от него в VBS избавиться ?
Часто простое возвращение oHTML.ResponseText дает VBS строку и + в конце ее еще один байт ( вроде как, символ перевод строки ) , как от него в VBS избавиться ?
Я такого на приведённом коде никогда не наблюдал.
Я такого на приведённом коде никогда не наблюдал.
Вот тут понаблюдайте http://ifconfig.me/ip :
oHTML.responseText <> "полученный текстовый IP"
kefi, у меня к Вам просьба личного характера — научитесь наконец пользоваться тэгом «url».
Речь выше шла вовсе не об этом ресурсе, так что изъясняйтесь впредь яснее, дабы было понятно, о чём Вы хотите сказать. В данном конкретном случае мне пока не ясно, шутки ли это самого IE, либо так шутят ребята с http://ifconfig.me (позже проверю): для FF, например, возвращается без каких-либо дополнительных символов; для IE же, действительно, как Вы и упомянули выше, добавляется символ LineFeed (0x0A). В данном конкретном случае его можно обрезать, например, так:
Option Explicit
Dim objXMLHTTPRequest
Dim strText
Set objXMLHTTPRequest = WScript.CreateObject("MSXML2.XMLhttp")
With objXMLHTTPRequest
.Open "GET", "http://ifconfig.me/ip", False
.Send
strText = .responseText
If Right(strText, 1) = vbLf Then
strText = Left(strText, Len(strText) - 1)
End If
WScript.Echo "[" & strText & "]"
End With
Set objXMLHTTPRequest = Nothing
WScript.Quit 0
интересно, а что означают здесь "class" и "ipadotted"- чей-то не помню таких в RegExp ?
Если вы утянете страницу с www.whoer.net
То покопавшись в ее исходном коде можно увидеть там строку:
<td colspan="3" class="wtr"><div id="remote_addr" class="ipadotted">111.222.333.444</div> </td>
Где 111.222.333.444 - это ваш IP
Собственно под эту сроку я и написал регулярное выражение:
objRegExp.Pattern = ".*class=.ipadotted..([0-9.]+).*"
Скажите, kefi, вы уверены, что точно понимаете что такое регулярные выражения?
Часто простое возвращение oHTML.ResponseText дает VBS строку и + в конце ее еще один байт ( вроде как, символ перевод строки ) , как от него в VBS избавиться ?
Я вас уверяю, страница http://www.whatismyip.com/automation/n09230945.asp дает чистый адрес состоящий из ЦИФР и ТОЧЕК. Без всяческих лишних символов. Вы сами то пробовали запускать вышеприведенный код? Я сейчас специально сохранил эту страницу 4 разными способами (IE8, FF, wget, VBScript) и всегда получал чистый IP адрес.
Так же проверил http://ifconfig.me/ip. Да, действительно, в конце возвращается символ перевода строки (0x0A). Опять же сохранил страницу 4 раза, и все они содержали в конце символ 0x0A
для FF, например, возвращается без каких-либо дополнительных символов
Вы уверены? Попробуйте сохранить страницу и открыть ее шестнадцатеричным редактором.
2 DnsIs > спасибо, все понятно, кроме вот пожалуй одного - насколько можно надеяться на стабильность работы http://www.whatismyip.com/automation/n09230945.asp, просто хотелось бы иметь какой-то надежный источник тестирования своего IP в автоматическом режиме ?
Ну о надежности этого ресурса я судить не могу. Но если вам вам очень важна надежность, я бы на вашем месте брал бы IP сразу с нескольких мест, вот и все. На всякий случай.
Кстати если у вас прямое подключение к интернету без всяких там проксей и пр., может лучше вообще брать свой IP из системы? Какова ваша цель?
2 DnsIs> Ну в этом смысле цель - понять метод определения своего внешнего IP, независимо от способа подключения - я и с прокси и без подключаюсь и всяко-разно.
Вы уверены? Попробуйте сохранить страницу и открыть ее шестнадцатеричным редактором.
Вы правы.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться