Что нового

Авторизация на сайтах

Dima$

Новичок
Сообщения
2
Репутация
1
Данная тема закреплена, прошу обсуждать здесь всё что касается авторизации на сайтах.

Похожие темы:
Автоматический логин (вход) на сайт
[Автоматизация] Вход на сайт через GUI интерфейс

CreatoR


Текст сообщения автора темы:

Доброго времени суток. Помогите пройти авторизацию на сайте http://mlgame.ru/. IE.au3 форму не находит никак...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Dima$
На форуме куча примеров, учитесь пользоваться поиском.
Код:
#include <IE.au3>

$sLogin = 'Login'
$sPass = 'Pass'
$sUrl = 'http://mlgame.ru/'

$oIE = _IECreate($sUrl)
$oLogin = _IEGetObjById($oIE, 'username')
$oPass = _IEGetObjByName($oIE, 'password')
$oCheck = _IEGetObjById($oIE, 'rememberMe')
$oButton = _IEGetObjById($oIE, 'loginButton')

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
_IEAction($oCheck, 'click')
_IEAction($oButton, 'click')
_IELoadWait($oIE)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Dima$
посмотри тему http://autoit-script.ru/index.php?topic=181.msg1429#msg1429
 

Kreol2013

Новичок
Сообщения
9
Репутация
0
Чтоб не плодить лишних тем.
Прошу помочь с авторизацией на сайтах
https://admin.advertise.com/ads-webapp/login/loginPage.do
https://7search.com/advertisers/
Попробовал самостоятельно, но не так все просто(.
Автоматизация нужна для парсинга цен.
Буду очень признателен.
 

Pupsik

Новичок
Сообщения
2
Репутация
0
[Сеть, интернет] Авторизация через IE, клик на web кнопку

Написал скрипт для авторизации сайта через IE, всё отлично идёт, остаётся только нажать "Войти", но не получается. Использовал такие функции от безысходности как:
_IEFormElementGetObjByName
_IEFormElementGetValue
_IEFormElementGetCollection
_IEFormGetObjByName
_IEFormGetCollection
_IELinkClickByText
_IEAction
Возможно это потому что я не правильно определяю кнопку.
Сам код кнопки
HTML:
<input type="submit" value="Войти" class="btn btn-success"/>
Код формы
Код:
<form action="" method="post">
Нет ни имени, ни id.
Курил оф. справку, курил справку в программе, курил ваш форум, курил гугл.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Pupsik,
Попробуйте сделать так.
Код:
#include <IE.au3>

;...
$oInputs = _IETagNameGetCollection ($oForm, 'input');$oForm получен ранее
For $oInput In $oInputs
	If $oInput.type = 'submit' And $oInput.value = 'Войти' Then
		_IEAction($oInput, 'click')
		_IELoadWait($oIE)
		ExitLoop
	EndIf
Next
;...
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Авторизация на autoit-script.ru

Код:
#include <Crypt.au3>
Login('OgoГоша', 'DcPlusplus123')
Exit

Func Login($vUserName, $vUserPass)
	Local $vSite = 'http://autoit-script.ru/'

	;Получаем HTML код
	Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
	$oHTTP.Open("GET", $vSite)
	$oHTTP.Send()

	Local $vData = $oHTTP.Responsetext

	;Достаем регулярными выражениями sid. Он понадобиться для шифрования.
	Local $vTemp = StringRegExp($vData, 'hashLoginPassword.*?([[:xdigit:]]{32})', 1)
	If Not IsArray($vTemp) Then Return SetError(1, 0, 0) ;Регулярка не сработала. Нет смысла продолжать, поэтому выходим.
	Local $vSid = $vTemp[0] ;Получили sid

	;Достаем регулярными выражениями PHPSESSID. Для гостей он выдается временный.
	$vTemp = StringRegExp($vData, 'PHPSESSID=(\w+)', 1)
	If Not IsArray($vTemp) Then Return SetError(2, 0, 0) ;Регулярка не сработала. Нет смысла продолжать, поэтому выходим.
	Local $vSesSid = $vTemp[0] ;Получили PHPSESSID.

	;Т.к актуальный пароль на сервер не передается он хешируется специальной функцией.
	Local $vHash = sha1(sha1(strtolower(_Encoding_ANSIToUTF8($vUserName)) & _Encoding_ANSIToUTF8($vUserPass)) & $vSid);

	;Получили хэш-пароль. Подготовим все данные для отправки.
	Local $vPostData = 'user=' & $vUserName & '&passwrd=&cookielength=-1&hash_passwrd=' & $vHash

	;Отправляем POST запрос на авторизацию
	$oHTTP.Open("POST", $vSite & 'index.php?PHPSESSID=' & $vSesSid & '&action=login2', False)
	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	$oHTTP.Send($vPostData)

	;Получаем главную страницу
	$oHTTP.Open("GET", $vSite)
	$oHTTP.Send()
	Local $HTMLSource = $oHTTP.Responsetext

	Local $aName = StringRegExp($HTMLSource, '<li id="name".*?</li>', 1)
	If Not IsArray($aName) Then
		ConsoleWrite($HTMLSource & @LF)
	Else
		ConsoleWrite(StringRegExpReplace($aName[0], '<.*?>', '') & @LF)
	EndIf
EndFunc   ;==>Login

Func _Encoding_ANSIToUTF8($sString)
	Return BinaryToString(StringToBinary($sString, 4))
EndFunc   ;==>_Encoding_ANSIToUTF8

Func sha1($vData) ;//PHP стиль (изменено stl)
	Return StringLower(StringSplit(_Crypt_HashData($vData, $CALG_SHA1), 2))
EndFunc   ;==>sha1

Func strtolower($sData)
	If Not $sData Or StringIsLower($sData) Then Return $sData
	Local $vDatas = StringSplit($sData, '', 2), $vRet
	For $vData In $vDatas
		If StringRegExp($vData, '[A-Z]') Then
			$vRet &= StringLower($vData)
		Else
			$vRet &= $vData
		EndIf
	Next
	Return $vRet
EndFunc   ;==>strtolower
 

Koekaker

Новичок
Сообщения
3
Репутация
0
Уважаемые знатоки!
Если возможно состряпайте некомпилированный скрипт для захода IE10
на http://mols.roszdravnadzor.ru/?type=logon&redirect_params=
У меня ничего не получилось (переделанные чужие готовые решения у меня не работали).
Логин и пароль я сам подставлю.
Спасибо!
 

MaximK

Знающий
Сообщения
33
Репутация
5
Возможно. Дайте логин и пароль. Лень регистрироваться.
 

Koekaker

Новичок
Сообщения
3
Репутация
0
Рад бы, но... только логин (asclepius). Зарегистрировано на организацию. Попробую сделать акк понарошечный.


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

Впрочем проверить факт подстановки логина и пароля можно и не зная пароля. Если ввести произвольный пароль, то появится сообщение о некорректности. А в поле логина будет виден искомый логин. Спасибо за участие!
 

MaximK

Знающий
Сообщения
33
Репутация
5
Ошибку выдает

Код:
$url="http://mols.roszdravnadzor.ru/?type=logon&redirect_params="
$login="login"
$pass="password"

#include<IE.au3>
$ie=_IECreate($url)
$logEl=_IEGetObjById($ie,"login")
_IEFormElementSetValue($logEl,$login)
$passEl=_IEGetObjById($ie,"password")
_IEFormElementSetValue($passEl,$pass)

_IELinkClickByText($ie,"Войти в систему")
 

Koekaker

Новичок
Сообщения
3
Репутация
0
Вот спасибо!! А то я уже на nircmdс насел. Там почему-то пароль содержащий спецсимволы не вставлялся как надо.
 
Сообщения
36
Репутация
-1
Помогите пожалуйста с авторизацией. Проблема в том, что никак не удается получить объект формы input. hash при обновлении страницы меняется.

Код:
<form action="/login" method="POST">
<button class="btn-link">
	<img src="/image/logo.png" width="64">
	<h4>Вход</h4>
	</button>
		<input type="hidden" id="hash" name="hash" value="8e1bb4340ea7908d850a03a64c11d5ae">
</form>

Код:
$oInputs = _IETagNameGetCollection($oIE, "input")
$oForm = _IEFormGetObjByName($oInputs, "hash")
$hash = _IEFormElementGetValue($oForm)
For $oInput In $oInputs
    If $oInput.type = "hidden" And $oInput.value = $hash Then
        _IEAction($oInput, "click")
        _IELoadWait($oIE)
        ExitLoop
    EndIf
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
fyviffitoffo,
Код:
#include <IE.au3>

Local $sUrl = @ScriptDir & '\1.html';url

$oIE = _IECreate($sUrl)
$oForms = _IEFormGetCollection($oIE)
For $oForm In $oForms
	If $oForm.GetAttribute('action') == '/login' Then
		$oInput = _IETagNameGetCollection($oForm, 'input', 0)
		If @error Then ExitLoop
		$oNodes = $oInput.attributes
		For $oNode In $oNodes
			$sValue = $oNode.nodeValue
			If Not $sValue Then ContinueLoop
			ConsoleWrite($oNode.name & ' = ' & $sValue & @LF)
		Next
;~ 		_IEAction($oInput, 'click')
;~ 		_IELoadWait($oIE)
		ExitLoop
	EndIf
Next
Код:
#include <IE.au3>

Local $sUrl = @ScriptDir & '\1.html';url

$oIE = _IECreate($sUrl)
$oForms = _IEFormGetCollection($oIE)
For $oForm In $oForms
	If $oForm.GetAttribute('action') == '/login' Then
		$oInput = _IEFormElementGetObjByName($oForm, 'hash')
		If @error Then ExitLoop
		$oNodes = $oInput.Attributes
		For $oNode In $oNodes
			$sValue = $oNode.nodeValue
			If Not $sValue Then ContinueLoop
			ConsoleWrite($oNode.name & ' = ' & $sValue & @LF)
		Next
;~ 		_IEAction($oInput, 'click')
;~ 		_IELoadWait($oIE)
		ExitLoop
	EndIf
Next
Код:
#include <IE.au3>

Local $sUrl = @ScriptDir & '\1.html';url

$oIE = _IECreate($sUrl)
$oInput = _IEGetObjById($oIE, 'hash')
If Not @error Then
	$oNodes = $oInput.Attributes
	For $oNode In $oNodes
		$sValue = $oNode.nodeValue
		If Not $sValue Then ContinueLoop
		ConsoleWrite($oNode.name & ' = ' & $sValue & @LF)
	Next
EndIf
;~ 		_IEAction($oInput, 'click')
;~ 		_IELoadWait($oIE)
 
Сообщения
36
Репутация
-1
madmasles спасибо, но почему то скрипт упорно стоит на _IEFormGetCollection или на _IEGetObjById и ничего не происходит. Какое назначение этого кода:
Код:
$oNodes = $oInput.attributes
For $oNode In $oNodes
$sValue = $oNode.nodeValue
If Not $sValue Then ContinueLoop

attributes и nodeValue связаны с свойствами веб страницы?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
fyviffitoffo [?]
attributes и nodeValue связаны с свойствами веб страницы?
attributes - Возвращает коллекцию атрибутов узла.
nodeValue - Устанавливает или возвращает значение узла, в зависимости от его типа.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
fyviffitoffo [?]
скрипт упорно стоит на _IEFormGetCollection или на _IEGetObjById и ничего не происходит
Вы дали код HTML, с этим кодом все мои 3 варианта работают. Если У Вас не работают, давайте ссылку на страницу.
hash при обновлении страницы меняется.
Я Вам показал, как получить все не пустые значения и имена атрибутов.
 
Сообщения
36
Репутация
-1
madmasles
www.vkway.com/auth, все таки там нужно нажимать на Button, пробовал такой код:
Код:
$oForm = _IEFormGetCollection($oIE, 0)
For $oForm In $oForms
    If $oForm.GetAttribute("action") == "/vklogin" Then
	  $oButton = _IETagNameGetCollection($oForm, "Button", 0)
	  _IEAction($oButton, "click")
	  _IELoadWait($oIE)
   EndIf

но все равно висит на _IEFormGetCollection.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
fyviffitoffo,
Код:
#include <IE.au3>

Local $sUrl = 'http://www.vkway.com/auth'

$oIE = _IECreate($sUrl)
$oForms = _IEFormGetCollection($oIE)
For $oForm In $oForms
    If $oForm.GetAttribute('action') == '/vklogin' Then
		_IEFormSubmit($oForm)
		ConsoleWrite(@error & @LF)
        ExitLoop
    EndIf
Next
 
Верх