1

Тема: VBS: Помогите распарсить IP address на http://www.whoer.net/

Помогите, плз, как с http://www.whoer.net/ получить значение своего IP адреса ?

2

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

kefi пишет:

Помогите, плз, как с 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
Нас невозможно сбить с пути, нам пофигу куда идти.

3 (изменено: Rumata, 2010-10-01 14:20:21)

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

Ищите подстроку вида

<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;
( 2 * b ) || ! ( 2 * b )

4

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

Если ресурс не важен.

Set oHTML = CreateObject("MSXML2.XMLhttp")
oHTML.Open "GET", "http://www.whatismyip.com/automation/n09230945.asp", False
oHTML.Send
myip = oHTML.ResponseText

5

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

Essential, ровно то же в посте #2.

6

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

Rumata пишет:

вернуть oHTML.responseXML и обработать его, рассматривая через призму DOM

Так ведь для html страницы oHTML.responseXML  вернет пусто ! Пробовал много раз.

DnsIs пишет:

objRegExp.Pattern = ".*class=.ipadotted..([0-9.]+).*"

интересно, а что означают здесь "class" и "ipadotted"- чей-то не помню таких в RegExp ?

Касательно кода :

DnsIs пишет:

Код:

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 избавиться ?

7

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

kefi пишет:

Часто простое возвращение oHTML.ResponseText дает VBS строку и + в конце ее еще один байт ( вроде как, символ перевод строки ) , как от него в VBS избавиться ?

Я такого на приведённом коде никогда не наблюдал.

8

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

alexii пишет:

Я такого на приведённом коде никогда не наблюдал.

Вот тут понаблюдайте http://ifconfig.me/ip :
oHTML.responseText <> "полученный текстовый IP"

9

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

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

10 (изменено: DnsIs, 2010-10-07 11:41:02)

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

kefi пишет:

интересно, а что означают здесь "class" и "ipadotted"- чей-то не помню таких в RegExp ?

Если вы утянете страницу с www.whoer.net
То покопавшись в ее исходном коде можно увидеть там строку:

<td colspan="3" class="wtr"><div id="remote_addr" class="ipadotted">111.222.333.444</div>&nbsp;</td>

Где 111.222.333.444 - это ваш IP

Собственно под эту сроку я и написал регулярное выражение:

DnsIs пишет:

objRegExp.Pattern = ".*class=.ipadotted..([0-9.]+).*"

Скажите, kefi, вы уверены, что точно понимаете что такое регулярные выражения?

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

alexii пишет:

для FF, например, возвращается без каких-либо дополнительных символов

Вы уверены? Попробуйте сохранить страницу и открыть ее шестнадцатеричным редактором.

Нас невозможно сбить с пути, нам пофигу куда идти.

11

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

2 DnsIs > спасибо, все понятно, кроме вот пожалуй одного - насколько  можно надеяться на стабильность работы http://www.whatismyip.com/automation/n09230945.asp, просто хотелось бы иметь какой-то надежный источник тестирования своего IP в автоматическом режиме ?

12 (изменено: DnsIs, 2010-10-08 07:12:04)

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

Ну о надежности этого ресурса я судить не могу. Но если вам вам очень важна надежность, я бы на вашем месте брал бы IP сразу с нескольких мест, вот и все. На всякий случай.
Кстати если у вас прямое подключение к интернету без всяких там проксей и пр., может лучше вообще брать свой IP из системы? Какова ваша цель?

Нас невозможно сбить с пути, нам пофигу куда идти.

13

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

2 DnsIs> Ну в этом смысле цель - понять метод определения своего внешнего IP, независимо от способа подключения - я и с прокси и без подключаюсь и всяко-разно.

14

Re: VBS: Помогите распарсить IP address на http://www.whoer.net/

DnsIs пишет:

Вы уверены? Попробуйте сохранить страницу и открыть ее шестнадцатеричным редактором.

Вы правы.