Что нового

Скрипт для определенной IP

crank

Новичок
Сообщения
12
Репутация
0
Пришла в голову такая идея, а можно сделать, чтобы скрипт работал только на определенной IP? По сути можно это делать, но не знаю, как делать...
Вот что знаю:
myip.ru - ваш IP-адрес
<TR><TD bgcolor=white align=center valign=middle>IP-адрес</TD></TR>
Решил составить бот, на которую при записи пишешь определенной ip. А когда открываешь, бот сам заходит на сайт, берет оттуда инфу о вашей IP, если записанный в бот ip и ip на сайте совпадают, то бот продолжает работу, если нет - выходит.
Но у меня почему то не работает.
Код:
#include <IE.au3>
$oIE = _IECreate ("myip.ru")
$sHTML = _IEBodyReadHTML ($oIE)
$sHTML = $sHTML & "<TR><TD bgcolor=white align=center valign=middle>107.129.17.12</TD></TR>"
$var = _IEBodyWriteHTML ($oIE, $sHTML)
If $var = "107.129.17.12" Then
	_IENavigate ($oIE, "autoit-script.ru")
Else
	Exit
EndIf


Но почему-то не работает :( Прошу помочь...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
If @IPAddress2 = "107.129.17.12" Then
	ShellExecute("autoit-script.ru")
Else
	Exit
EndIf


?
:scratch:


Добавлено:
Сообщение автоматически объединено:

Или если обязательно через сайт (по причинам использования прокси, хотя я не уверен как в этом случае работает макрос), то можно так:

Код:
$sIP = BinaryToString(InetRead('http://www.myip.ru/get_ip.php?loc='))
$sIP = StringRegExpReplace($sIP, '(?is).*<TD bgcolor=white align=center valign=middle>(.*?)</TD>.*', '\1')

If $sIP = '107.129.17.12' Then
	ShellExecute('autoit-script.ru')
Else
	Exit
EndIf
 
Автор
C

crank

Новичок
Сообщения
12
Репутация
0
CreatoR, подставляю, опять не получается... А по другому можно, чтобы более легче был, не через сайт :-[
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
crank
так попробуй:
Код:
$IP1 = @IPAddress1
$IP2 = @IPAddress2
If $Ip1 = "107.129.17.12" Or $Ip2 = "107.129.17.12" Then
    ShellExecute("http://google.com")
Else
    Exit
EndIf


Или еще так (пример из справки + чуть добавил)
Код:
#include <Inet.au3>
$PublicIP = _GetIP()
MsgBox(0, "IP Address", "Your IP Address is: " & $PublicIP)
If $PublicIP = "107.129.17.12" Then
    ShellExecute("http://google.com")
Else
    Exit
EndIf
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
crank [?]
Что?

А по другому можно, чтобы более легче был, не через сайт
Я выше показал как.

Yuriy
@IPAddress1 это статичный IP, во второй версий это как раз тот IP (динамичный) что возвращает сайт myip.ru.
А _GetIP это по сути тот же метод с выдёргиванием IP с online сервиса, результат такой же как в @IPAddress2.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
CreatoR
Я первую версию написал так, потому что предварительно
запустил на своей машине вот этот тестовый скрипт:
Код:
MsgBox(64, "IP", @IPAddress1)
MsgBox(64, "IP", @IPAddress2)


И выдало у меня следующее:
IP1 = 77.52.199.125
IP2 = 0.0.0.0
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yuriy
А что выдаёт сайт myip.ru, или _GetIP? тоже самое что и в «@IPAddress1»?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
_GetIP как правильно заметил CreatoR берёт ваш WAN IP с сайта httр://checkip.dyndns.org, IMHO неудачная функция.
Если вы не за роутером то ваш WAN IP это @IPAddress1
Но, если вы за роутером, то @IPAddress1 будет содержать ваш локальный IP 192.168.XXX.XXX
В случае с роутером, можно брать WAN IP со страницы роутера.
 
Автор
C

crank

Новичок
Сообщения
12
Репутация
0
Спасибо все! Но больше понравилась 2 версия у Юрия ;D
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
CreatoR
А что выдаёт сайт myip.ru, или _GetIP? тоже самое что и в «@IPAddress1»?
Да. Дома.
А вот на работе скрипт
Код:
MsgBox(64, "IP", @IPAddress1)
MsgBox(64, "IP", @IPAddress2)

выдал
IP1 = 192.168.x.x
IP2 = 77.52.x.x
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
IP адреса имеют свойство "переезжать" на другое макро - проверено.

Код:
MsgBox(0, Default, _RealIP())

Func _RealIP()

	Local $aIp[4] = [@IPAddress1, @IPAddress2, @IPAddress3, @IPAddress4]

	For $i = 0 To UBound($aIp) - 1
;~ 		If StringLeft($aIp[$i], 7) = "192.168" Then Return $aIp[$i]
		If $aIp[$i] = "107.129.17.12" Then Return $aIp[$i]
	Next

	Return SetError(1, 0, 0)

EndFunc
 

astati

Новичок
Сообщения
145
Репутация
4
Извините что отписываюсь в данной теме...
А можно ли гораничить использования чита не по конкретному IP адрессу, а по зоне Ip адрессов?
Например чтобы на русских IP работало, а на IP других стран нет?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
astati
создай новую тему
 
Верх