1 (изменено: Rumata, 2012-02-23 19:06:44)

Тема: CMD/WSH/HTA/JS/VBS: Универсальный способ определения внешнего IP и др.

Такие ресурсы существуют, но этот лучший по количеству предоставляемых данных, структурированности и благозвучности доменного имени

http://ifconfig.me/


curl ifconfig.me

wget -qO - ifconfig.me/ip

.
JS


var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/ip', false);
xmlhttp.send();

var ip = xmlhttp.responseText;

.
JS + JSON

var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/all.json', false);
xmlhttp.send();

var data = JSON.parse(xmlhttp.responseText);
var ip = data.ip_addr;

.
JS + XML


var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/all.xml', false);
xmlhttp.send();

var ip = xmlhttp.responseXml.getElementsByTagName('ip_addr')[0].text;

.
Аналогично можно выполнить и в VBS, например


Dim xmlhttp, ip

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "GET", "http://ifconfig.me/ip", False
xmlhttp.send

ip = xmlhttp.responseText
( 2 * b ) || ! ( 2 * b )

2

Re: CMD/WSH/HTA/JS/VBS: Универсальный способ определения внешнего IP и др.

echo off
set outerIP=
for /f %%x in ('mshta "about:<hta:application showintaskbar='no' windowstate='minimize' navigable='yes' border='none' caption='no' sysmenu='no'><iframe src='http://ifconfig.me/ip' application='yes' onload='(new ActiveXObject("Scripting.FileSystemObject")).GetStandardStream(1).Write(window.frames.item(0).document.body.innerText);window.close();'></iframe>"') do (
    set outerIP=%%x
)
echo %outerIP%
Я конечно далек от мысли... (с)

3

Re: CMD/WSH/HTA/JS/VBS: Универсальный способ определения внешнего IP и др.

Ну лучше уж так:

ip.bat

@set @x=0/*!&&@set @x=
@ %windir%\System32\cscript.exe //nologo //e:javascript "%~dpnx0" %*
@goto :eof */

var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/ip', false);
xmlhttp.send();
 
var ip = xmlhttp.responseText;

WScript.Echo(ip);

WScript.Quit();
( 2 * b ) || ! ( 2 * b )