Что нового

[Автоматизация] Запуск скрипта от имени пользователя залогинившегося на сайте

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
Добрый день!
написал скрипт но необходимо добавить функцию проверки пользователя, т.е. пользователь заходит на сайт, авторизируется, и запускает скрипт, который разработан именно для него, и если имя пользователя не совпадает с именем в скрипте, тогда он прекращает свою работу, с выводом сообщения.

на сайте код выглядит так:

<div class="nickname">ИМЯПОЛЬЗОВАТЕЛЯ</div>

Язык только начал осваивать, так что надеюсь на помощь, если не трудно, комменты сделайте, для понимания процесса.

:IL_AutoIt_1:
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А это как? Серверная часть на чем написана сайта-то?
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
[Автоматизация] Re: [Автоматизация] Запуск скрипта от имени пользователя залогинившегося на сайте

серверная часть написана скорее всего на php но точно сказать не могу, не мой сайт.

скрипт, простейший, но необходимо, что бы он запускался пользователем, с exe файла
и осуществлялась проверка совпадения имен на сайте и в скрипте
P.S. если есть ошибки в листинге, можете объяснить что не так?
Код:
#include <IE.au3>
Dim $user = "ИМЯПОЛЬЗОВАТЕЛЯ"
$oIE =_IECreate("http://mysite.ru"); открываем сайт
WinActivate("mysite.ru");Заголовок окна
Sleep (60000)
;сюда вставить проверку имени авторизированного пользователя
; если нет, завершение работы скрипта с сообщением
If $user = "ИМЯПОЛЬЗОВАТЕЛЯ" Then
While 100
For $b = 10 to 1 Step -1
_IENavigate ($oIE,"http://mysite.ru/1/0"); 
Sleep (3000)
Next
_IENavigate ($oIE,"http://mysite.ru/5/all"); 
Sleep (2000)
WEnd
if $user <> "ИМЯПОЛЬЗОВАТЕЛЯ" Then
MsgBox(0, "ваше имя отлично от авторизированного пользователя" , 4)
EndIf
WinClose("mysite.ru")
 

kaster

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

{CodeWarn.SModer}
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
ZeVSalt
Какую цель вы преследуете этим? Может легче написать функцию авторизации!? Если авторизация успешна, следовательно, и пользователь тот за кого себя выдаёт :smile:
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
это бот для игры, но не хотелось бы что бы он ушел из клана, в левые руки, поэтому хочу сделать привязку к имени игрока, а с авторизацией вариант не подходит, лог и пасс свой никто не даст. нужно сделать проверку ПОСЛЕ авторизации
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А что за игра? Как показывает практика, надо применять http запросы, а они и средствами php делаются. Просто по моему на серверной части - это гемморойно.
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
divinity.ru

сам код страницы можно как то проанализировать?
 

---Zak---

Скриптер
Сообщения
443
Репутация
116
Сильно не бить =)))
Код:
#include <IE.au3>
;~ 	СЮДА ПИШЕМ СВОЙ НИК НА САЙТЕ
	$NickName = '---Zak---'
	
	$oIE =_IECreate("http://autoit-script.ru/index.php"); открываем сайт

While 1
;~ 		СЛИП НА 3 СЕКУНДЫ
	Sleep(3*1000)
;~ 		НАД ВЫХОДОМ НАДО ЕЩЕ ПОРАБОТАТЬ, НО МНЕ ХВАТИЛО ЭТОГО
	If Not WinExists("[CLASS:IEFrame]") Then
		ExitLoop
	EndIf
;~ 		ХВАТАЕМ СТРАНИЧКУ
	Local $sData1 = _IEBodyReadHTML($oIE)
;~ 		ОБРАБАТЫВАЕМ, ВХОД НА САЙТ
	$sPattern1 = '(?s).*?<LI id=name>Здравствуйте, <EM>(.*?)</EM> </LI>' ;все
	$aText1 = StringRegExp($sData1, $sPattern1, 3)
	If Not @error Then
		ConsoleWrite($aText1[0])
;~ 				ПРОВЕРЯЕМ НИК, ЕСЛИ ЕСТЬ СОВПАДЕНИЕ, ТО ВЫВОДИМ НИК
		If ($aText1[0] == $NickName) Then
			MsgBox(0, "Есть совпадение по нику...", $aText1[0])
		EndIf
	EndIf
;~ 		ОБРАБАТЫВАЕМ ГОСТЯ
	$sPattern1 = '(?s).*?<LI id=name>Добро пожаловать, <EM>(.*?)</EM> </LI>' ;все
	$aText1 = StringRegExp($sData1, $sPattern1, 3)
	If Not @error Then
;~ 			А КАК У НАС ГОСТЯ ЗОВУТ ?
		ConsoleWrite($aText1[0])
	EndIf
	ConsoleWrite(@CRLF)
WEnd


PS: сейчас попробую для самого сайта (divinity.ru)
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
пишет : ошибка #include <Encoding.au3>
я так понимаю инклюды не подгружаются, как это исправляется?
соррь за тупой вопрос, только начал осваивать AutoIt
 

---Zak---

Скриптер
Сообщения
443
Репутация
116
Код:
#include <Encoding.au3>

Она тут не нужна - это я просто из другого своего примера ее случайно скопировал...

Итого у меня (WinXP SP3 ENG + AutoIt v3.3.6.1 + IE 8') схватил вот так:
Код:
#include <IE.au3>
;~ 	СЮДА ПИШЕМ СВОЙ НИК НА САЙТЕ
	$NickName = ''
	
	$oIE =_IECreate("http://gnevbogov.ru/mainPage"); открываем сайт
While 1
;~ 		СЛИП НА 3 СЕКУНДЫ
	Sleep(3*1000)
;~ 		НАД ВЫХОДОМ НАДО ЕЩЕ ПОРАБОТАТЬ, НО МНЕ ХВАТИЛО ЭТОГО
	If Not WinExists("[CLASS:IEFrame]") Then
		ExitLoop
	EndIf
;~ 		ХВАТАЕМ СТРАНИЧКУ
		Local $sData1 = _IEBodyReadHTML($oIE)
;~ 		ОБРАБАТЫВАЕМ, ВХОД НА САЙТ
		$sPattern1 = '(?s).*?<DIV class=nickname>(.*?)</DIV>' ;все
		$aText1 = StringRegExp($sData1, $sPattern1, 3)
		If Not @error Then
			ConsoleWrite($aText1[0])
;~ 				ПРОВЕРЯЕМ НИК, ЕСЛИ ЕСТЬ СОВПАДЕНИЕ, ТО ВЫВОДИМ НИК
			If ($aText1[0] == $NickName) Then
				MsgBox(0, "Есть совпадение по нику...", $aText1[0])
			EndIf
		EndIf
		ConsoleWrite(@CRLF)
WEnd
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
заходит под любым пользователем, и сообщений никаких не выдает :(
 

---Zak---

Скриптер
Сообщения
443
Репутация
116
Запусти через "SciTE Script Editor" и смотри консоль...
Сообщение тут выведется, если $NickName совпадет с ником на самом страничке.

ЗЫ: у меня к тебе вопрос... в чем смысл программы ??? Ты даешь другому человеку логин и пароль от чара - он запускает прогу и там вводит этот логин и пароль ? В таком случае что ему мешает не запускать программу, а просто зайди сам по себе и сменить пароль ?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
ZeVSalt,
Дайте скриншот всего окна IE с авторизированным пользователем.
 

---Zak---

Скриптер
Сообщения
443
Репутация
116
У меня браузер из странички берет
Код:
<DIV class=nickname>(.*?)</DIV>
У него
Код:
<DIV class="nickname">(.*?)</DIV>
В итоге:
Код:
#include <IE.au3>
	Global  $oIE =_IECreate("http://gnevbogov.ru/mainPage"); открываем сайт
	Global  $NickTrue = 0
;~ 	СЮДА ПИШЕМ СВОЙ НИК НА САЙТЕ
	$NickName = ''

While 1
;~ 		СЛИП НА 3 СЕКУНДЫ
	Sleep(3*1000)
;~ 		НАД ВЫХОДОМ НАДО ЕЩЕ ПОРАБОТАТЬ, НО МНЕ ХВАТИЛО ЭТОГО
	If Not WinExists("[CLASS:IEFrame]") Then
		ExitLoop
	EndIf
;~ 		ХВАТАЕМ СТРАНИЧКУ
	Local $sData1 = _IEBodyReadHTML($oIE)
;~ 		ОБРАБАТЫВАЕМ, ВХОД НА САЙТ
	$sPattern1 = '(?s).*?<DIV class=nickname>(.*?)</DIV>' ;все
	$aText1 = StringRegExp($sData1, $sPattern1, 3)
	If Not @error Then
		$NickTrue = $aText1[0]
	EndIf
	$sPattern1 = '(?s).*?<DIV class="nickname">(.*?)</DIV>' ;все
	$aText1 = StringRegExp($sData1, $sPattern1, 3)
	If Not @error Then
		$NickTrue = $aText1[0]
	EndIf
		ConsoleWrite($NickTrue)
;~ 				ПРОВЕРЯЕМ НИК, ЕСЛИ ЕСТЬ СОВПАДЕНИЕ, ТО ВЫВОДИМ НИК
		If ($NickTrue = $NickName) Then
			ConsoleWrite(" - побежали !!!")
			_Bot()
		EndIf
	ConsoleWrite(" - "&@CRLF)
WEnd
	
Func _Bot()
;~ ЧТО ДЕЛАЕМ ДАЛЬШЕ: ПЕРЕХОДИМ ПО СТРАНИЧКАМ (мочим ботов, собираем ресурсы и т.п.)
EndFunc

ЗЫ: скрин предоставить могу, у меня половина игрушки кривое отображается
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
$sPattern = '(?s)<DIV class=["'']*nickname["'']*>(.*?)</DIV>'

где то так?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
А так не проще?
Код:
;...
$fValid = False
$sValidNick = 'ValidNick_1|ValidNick_2|ValidNick_3'
$aValidNick = StringSplit($sValidNick, '|')
;...
$sData1 = _IEBodyReadHTML($oIE)
For $i = 1 To $aValidNick[0]
	If StringInStr($sData1, $aValidNick[$i]) Then
		$fValid = True
		ExitLoop
	EndIf
Next
If Not $fValid Then
	MsgBox(16, 'Error', 'До свидания')
	Exit
EndIf
$sData1 = ''
$aValidNick = 0
;...
 
Автор
ZeVSalt

ZeVSalt

Я не лупоглазый, это прищур такой !
Сообщения
136
Репутация
0
Всем большое спасибо за помощь и пояснения для начинающего в AutoIt

Отдельное большущее спасибо ---Zak---
 
Верх