Тема: OFF: Проверка IP
Давайте тут выложим сайты для удобной проверки IP.
Я пользуюсь этими двумя:
http://ip.ahk4.me
http://7fw.de/ipraw.php
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Давайте тут выложим сайты для удобной проверки IP.
Я пользуюсь этими двумя:
http://ip.ahk4.me
http://7fw.de/ipraw.php
А AHK тут причём? Переношу в Script-Coding.com community.
2Malcev, что значит "сайт для удобной проверки IP"? Есть "неудобные" сайты? Неудобные сайты обычно проходят по ст.280\282 УК РФ. А если серьезно, то конечная реализация некоторого сайта не всегда совпадает с оригинальной задумкой и как следствие то, что одним разумеется как "удобство", другим будет названо "убожеством", - все относительно.
Не проще ли получать нужный IP скриптом?
Не проще ли получать нужный IP скриптом?
Не в курсе кому была обращена эта реплика, так что отвечу за себя. Проще, причем намного, учитывая постоянно развернутую на весь экран консоль.
Я имею в виду как узнать свой IP с минимальным использованием кода (без RegEx).
В веб-интерфейс роутера зайти. Вообще никакого кода, только мышкой поорудовать.
Т.е. нет, возможно, ещё с клавиатуры пароль и логин ввести. Но кода таки никакого.
Я имею в виду как узнать свой IP с минимальным использованием кода (без RegEx).
Узнать — это в каком смысле? Просто посмотреть, или получить в переменную?
Получить в переменную, при условии, что стоит рутер и использую прокси-сервер.
На AHK:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://ip.ahk4.me")
HTTP.Send()
MsgBox, % HTTP.ResponseText
В веб-интерфейс роутера зайти. Вообще никакого кода, только мышкой поорудовать.
Т.е. нет, возможно, ещё с клавиатуры пароль и логин ввести. Но кода таки никакого.
Дело не в коде, а в идологическом "удобстве", но в Вашем случае есть еще кое-что: лазить с любого вафля-устройства через вэб-интерфейс роутера, - проще все же код.
Узнать — это в каком смысле? Просто посмотреть, или получить в переменную?
Именно! Копипаст в данном случае идет лесом.
Получить в переменную, при условии, что стоит рутер и использую прокси-сервер...
"Роза пахнет розой", так что если прочие аргументы для Вас не имеют значения, то как насчет следующего: сегодня ip.ahk4.me есть, а завра его нет. Что тогда? И потом, как было сказано ранее, у каждого свое представление об удобстве.
то как насчет следующего: сегодня ip.ahk4.me есть, а завра его нет. Что тогда?
Вот я поэтому и предложил создать список сайтов, которые выдают только IP, чтобы можно было, ничего не меняя в коде кроме адреса сайта, получить свой IP.
Вот я поэтому и предложил создать список сайтов, которые выдают только IP, чтобы можно было, ничего не меняя в коде кроме адреса сайта, получить свой IP.
Сизифов труд. Что ж, удачи!
А что мешает свой сервер поднять? Тогда не придется полагаться на кого-то. Если надо, могу поднять на сервере скрипт.
Обсуждалось. Небольшая тема амбициозным названием, но с короткими и емкими примерами - CMD/WSH/HTA/JS/VBS: Универсальный способ определения внешнего IP и др.
В любом случае все эти сервисы не покажут серый IP.
Для верного определения обхожусь таким скриптом:
For Each IP in GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")._
ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'")
If Not IsNull(IP.IPAddress) Then MyIP = MyIP & Join(IP.IPAddress, vbLf) & vbLf
Next : MsgBox MyIP, 64, " Мои текущие IP"
Flasher, что означает "серый"? Тот, что выводит ipconfig?
Для верного определения обхожусь таким скриптом...
Например, менее красиво, но без WMI.
(function() {
var std, res, i = 0, ip;
with (new ActiveXObject('WScript.Shell')) {
std = Exec("cmd /q /k echo off");
std.StdIn.WriteLine("reg query \
HKLM\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces \
/s | findstr /irc:\"DhcpIPAddress\" & exit"
);
res = std.StdOut.ReadAll().split('\n');
for (; i < res.length; i++) {
ip = res[i].match(/(\d+\.){3}\d+/g);
WScript.echo(ip !== null ? ip : "");
}
}
}());
В PowerShell - короче:
(gp HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\* | ? {
$_.DhcpIPAddress -ne $null -and $_.DhcpIPAddress.ToString() -ne '0.0.0.0'
}).DhcpIPAddress
Тот, что выводит ipconfig?
ipconfig и белый выводит. Серый - собственный/внутренний/локальный, не(уникальный/выделенный/публичный), шлюзовой, начинающийся с 10/127/169/172/192.
Например, менее красиво, но без WMI.
Там выше про отсутствие регекспов писали.
Вот ещё вариант без WMI:
Hive = "HKLM\SYSTEM\CurrentControlSet\services\"
Hive1 = Hive & "RemoteAccess\Interfaces\"
Hive2 = Hive & "Tcpip\Parameters\Interfaces\"
For i = 2 To 10
N = Hive1 & i & "\"
With CreateObject("WScript.Shell")
On Error Resume Next
.RegRead(N) : If Err.Number < 0 Then Exit For
IP = .RegRead(Hive2 & .RegRead(N & "InterfaceName") & "\IPAddress")
If Err.Number = 0 Then MyIP = MyIP & Join(IP, vbLf) & vbLf
End With : On Error Goto 0
Next : MsgBox MyIP, 64, " Мои текущие IP"
У Яндекс вроде бы API позволяет обходится без регулярок:
with (new ActiveXObject('WinHTTP.WinHTTPRequest.5.1')) {
open('GET', 'http://ipv4.internet.yandex.ru/api/v0/ip');
send();
WScript.echo(responseText);
}
Я вот пользуюсь этим сайтом https://ipv4.icanhazip.com/
Он единственный, кто определяет истинный IPv4, все остальные отображают IPv6.
Но вот проблема. Если изменить IPv4, далее перезагрузить сайт - то информация в нём не изменится. Но если открыть этот сайт например в другом браузере или в режиме инкогнито, то там появляется новый IP. Причём если потом вернутся на старую вкладку браузера, то IP там останется тот же самый.
Тоже самое происходит, если воспользоваться ahk.
f2::
MsgBox % http("GET", "https://ipv4.icanhazip.com")
return
UrlGET(URL) {
ComObjError(false)
HTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HTTP.Open("GET", URL, false)
HTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
HTTP.SetRequestHeader("Connection", "Keep-Alive")
HTTP.Send()
return HTTP.ResponseText
}
Запускаю код, жму F2, выходит мой текущий IPv4. Далее меняю этот IP через специальную прогу, жду секунд 10, жму опять F2, выдаёт тот же IP. Но если перезагрузить ahk и нажать F2, то выдаст уже новый IP.
Как эту проблему решать?
Нашёл решение на c#.
Но совершенно не понимаю как реализовать такое же на ahk.
Подскажите пожалуйста. Я убил часа два гугля эту дичь и абсолютно никто ничего про это не упоминает...
HTTP.SetRequestHeader("Connection", "close") помогло!
хвала небесам и Ринату Намазову!
Вот я поэтому и предложил создать список сайтов, которые выдают только IP, чтобы можно было, ничего не меняя в коде кроме адреса сайта, получить свой IP.
Есть такое. Один минус - написано под линукс и cygwin/mingw. Под чистый cmd.exe не адаптировал (не ставил такой задачи):
https://github.com/ildar-shaimordanov/b … aster/myip
Список был составлен из уже известных мне и соществующих в интернете.
kolotilov256, эти строки не нужны:
HTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
HTTP.SetRequestHeader("Connection", "Keep-Alive")
А разве просто так не работает:
f2::
MsgBox % UrlGET("https://ipv4.icanhazip.com")
return
UrlGET(URL) {
HTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HTTP.Open("GET", URL, false)
HTTP.Send()
return HTTP.ResponseText
}
teadrinker, работает, но при смене IP - сайт отображает старый IP адрес.
P.S: Если открывать этот же сайт с другого браузера или в режиме инкогнито текущего браузера - то новый IP уже отображает.
У ahk там тоже свой виртуальный сервер, который не меняется, пока не перезагрузишь скрипт или не выполнишь эту команду HTTP.SetRequestHeader("Connection", "close")
Не знаю какими вы программами пользуетесь для изменения айпи, но у меня при смене айпи, код из 23 поста всегда показывает актуальный айпи.
Malcev, ну вот есть такой специальный лаунчер, который меняет IP адрес локально только для gta samp.
Список был составлен из уже известных мне и соществующих в интернете.
Протестировал в броузере.
Не загружаются:
#IPURL="ifcfg.me"
#IPURL="ip.appspot.com"
Выводят неверный айпи:
#IPURL="ifconfig.me/ip" (через http распознает правильно)
#IPURL="ipecho.net/plain"
#IPURL="ipinfo.io/ip" (через http распознает правильно)
#IPURL="myexternalip.com/raw"
Malcev, значит какие-то устарели, перестали работать.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться