<form method="post" class="form" action="">
<input type="hidden" value="b1866b7f3864a303cdad6b2872aa0d6b10" name="track_id" id="track_id">
<input type="hidden" value="ru" name="language" id="language">
<div data-block="control_firstname" class="control control_name_firstname">
<div class="control__label control__label_name_firstname">
<label for="firstname">Имя</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="firstname" id="firstname" value="" class="control__input control__input_name_firstname">
</div>
<div class="control__error control__error__firstname_missingvalue g-hidden">Пожалуйста, укажите имя</div>
<div class="control__error control__error__firstname_toolong g-hidden">Пожалуйста, укажите более короткий вариант имени, до 50 символов</div>
</div>
<div data-block="control_lastname" class="control control_name_lastname">
<div class="control__label control__label_name_lastname">
<label for="lastname">Фамилия</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="lastname" id="lastname" value="" class="control__input control__input_name_lastname">
</div>
<div class="control__error control__error__lastname_missingvalue g-hidden">Пожалуйста, укажите фамилию</div>
<div class="control__error control__error__lastname_toolong g-hidden">Пожалуйста, укажите более короткий вариант фамилии, до 50 символов</div>
</div>
<div data-block="control_login" class="control control_name_login">
<div class="control__label control__label_name_login">
<label for="login">Придумайте логин</label>
</div>
<div class="control__msg">
<div class="login__loading g-hidden">проверка …</div>
<div class="login__ok control__valid g-hidden">логин свободен</div>
<div class="login_alias_promo_startswithdigit js-alias-promo-startswithdigit g-hidden">Логин, соответствующий номеру телефона, можно <a data-base-url="/registration/mail/digit?origin=loginstartswithdigit&track_id=" href="/registration/mail/digit?origin=loginstartswithdigit&track_id=" class="login_alias_promo_startswithdigit_link js-alias_startswithdigit_link js-alias-link">завести здесь</a>
</div>
<div class="login__requirements js-requirements g-hidden">Логин может состоять из латинских символов, цифр, одинарного дефиса или точки. Он должен начинаться с буквы, заканчиваться буквой или цифрой и содержать не более 30 символов.</div>
<div class="login__requirements js-requirements-short g-hidden">Логин может состоять из латинских символов, начинаться с буквы и заканчиваться буквой или цифрой.</div>
<div class="login_alias_promo_notavailable js-alias-promo-notavailable g-hidden">Рекомендуем вам <a data-base-url="/registration/mail/digit?origin=loginnotavailable&track_id=" href="/registration/mail/digit?origin=loginnotavailable&track_id=" class="login_alias_promo_notavailable_link js-alias_notavailable_link js-alias-link">завести логин</a> как номер вашего мобильного телефона. Например, [email protected]. Это очень удобно.</div>
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="login" id="login" value="" class="control__input control__input_name_login">
</div>
<ol class="login__suggest g-hidden">
</ol>
<div class="digitLoginSuggestion g-hidden">
<div class="digitLoginSuggestion-content text">
<p class="digitLoginSuggestion_message">В качестве логина можно <a data-base-url="/registration/mail/digit?origin=bubblelink&track_id=" href="/registration/mail/digit?origin=bubblelink&track_id=" class="login_alias_promo_bubble_link js-alias_bubble_link js-alias-link">использовать</a> номер вашего телефона, например [email protected]</p>
<a data-base-url="/registration/mail/digit?origin=mail2digit&track_id=" href="/registration/mail/digit?origin=mail2digit&track_id=" class="digitLoginSuggestion_button js-alias_bubble_button js-alias-link">
<span class="button-content">Перейти</span>
</a>
</div>
</div>
<div class="control__error control__error__login_missingvalue g-hidden">Необходимо выбрать логин</div>
<div class="control__error control__error__login_notavailable g-hidden">К сожалению, логин занят</div>
<div class="control__error control__error__login_prohibitedsymbols g-hidden">Недопустимый логин</div>
<div class="control__error control__error__login_startswithdigit g-hidden">Логин не должен начинаться с цифры</div>
<div class="control__error control__error__login_toolong g-hidden">Логин слишком длинный</div>
<div class="control__error control__error__login_startswithdot g-hidden">Логин не должен начинаться с точки</div>
<div class="control__error control__error__login_startswithhyphen g-hidden">Логин не должен начинаться с дефиса</div>
<div class="control__error control__error__login_endswithhyphen g-hidden">Логин не должен заканчиваться дефисом</div>
<div class="control__error control__error__login_doubleddot g-hidden">Логин не должен содержать две точки подряд</div>
<div class="control__error control__error__login_doubledhyphen g-hidden">Логин не должен содержать два дефиса подряд</div>
<div class="control__error control__error__login_dothyphen g-hidden">Логин не должен содержать точку и дефис подряд</div>
<div class="control__error control__error__login_hyphendot g-hidden">Логин не должен содержать дефис и точку подряд</div>
<div class="control__error control__error__login_endswithdot g-hidden">Логин не должен заканчиваться точкой</div>
</div>
<div data-block="control_password" class="control control_name_password">
<div class="control__label control__label_name_password">
<label for="password">Придумайте пароль</label>
</div>
<div class="control__msg">
<div class="toggleVisibility" id="wannasee_ctrl">
<span class="b-link b-link_pseudo_yes b-link_form b-nobr">
<span class="b-link__inner">Показать текст пароля</span>
</span>
</div>
<div class="toggleVisibility g-hidden" id="nosee_ctrl">
<span class="b-link b-link_pseudo_yes b-link_form b-nobr">
<span class="b-link__inner">Скрыть текст пароля</span>
</span>
</div>
</div>
<div class="control__cntrl">
<input type="password" autocomplete="off" name="password" id="password" value="" class="control__input control__input_name_password">
</div>
<div class="password-indicator">
<div class="password-indicator__i" style="background: none repeat scroll 0% 0% red;"> </div>
</div>
<div class="password-ok control__valid g-hidden">Надежный<span class="password-legend">
</span>
</div>
<div class="control__error control__error__password_missingvalue g-hidden">Необходимо выбрать пароль</div>
<div class="control__error control__error__password_likelogin g-hidden">Пароль не может совпадать с логином</div>
<div class="control__error control__error__password_tooshort g-hidden">Пароль слишком короткий<span class="password-legend">
</span>
</div>
<div class="control__error control__error__password_weak g-hidden" style="color: rgb(187, 0, 0);">Пароль слишком простой<span class="password-legend">
</span>
</div>
<div class="control__error control__error__password_prohibitedsymbols g-hidden">Пароль содержит запрещенные символы</div>
<div class="control__error control__error__password_likephonenumber g-hidden">Пароль не может совпадать с телефоном</div>
<div class="control__error control__error__password_toolong g-hidden">Пароль слишком длинный<span class="password-legend">
</span>
</div>
</div>
<div data-block="control_password-confirm" class="control control_name_password-confirm">
<div class="control__label control__label_name_password-confirm">
<label for="password_confirm">Повторите, чтобы не ошибиться</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="password" autocomplete="off" name="password_confirm" id="password_confirm" value="" class="control__input control__input_name_password-confirm">
</div>
<div class="password-confirm__valid control__valid g-hidden">введено верно</div>
<div class="control__error control__error__password-confirm_missingvalue g-hidden">Необходимо ввести пароль еще раз</div>
<div class="control__error control__error__password-confirm_notequal g-hidden">Подтверждение не совпадает с паролем</div>
</div>
<div data-block="control_question" class="control control_name_question">
<div class="control__label control__label_name_question">
<label for="hint_question_id">Контрольный вопрос</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<select name="hint_question_id" id="hint_question_id" class="control__input control__input_name_question">
<option value="0">не выбран</option>
<option value="1">Девичья фамилия матери</option>
<option value="2">Любимое блюдо</option>
<option value="3">Почтовый индекс родителей</option>
<option value="4">Дата рождения бабушки</option>
<option value="5">Ваше прозвище в школе</option>
<option value="6">Номер паспорта</option>
<option value="7">Пять последних цифр кред. карты</option>
<option value="8">Пять последних цифр ИНН</option>
<option value="9">Ваш любимый номер телефона</option>
<option value="99">Задайте собственный вопрос</option>
</select>
</div>
<div class="control__error control__error__question_missingvalue g-hidden">Пожалуйста, выберите контрольный вопрос</div>
</div>
<div data-block="control_user-question" class="control control_name_user-question g-hidden">
<div class="control__label control__label_name_user-question">
<label for="hint_question">Придумайте свой вопрос</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="hint_question" id="hint_question" value="" class="control__input control__input_name_user-question">
</div>
<div class="control__error control__error__user-question_missingvalue g-hidden">Пожалуйста, укажите свой вопрос</div>
<div class="control__error control__error__user-question_toolong g-hidden">Контрольный вопрос слишком длинный</div>
</div>
<div data-block="control_answer" class="control control_name_answer">
<div class="control__label control__label_name_answer">
<label for="hint_answer">Ответ на контрольный вопрос</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="hint_answer" id="hint_answer" value="" class="control__input control__input_name_answer">
</div>
<div class="control__error control__error__answer_missingvalue g-hidden">Необходимо указать ответ на контрольный вопрос</div>
<div class="control__error control__error__answer_toolong g-hidden">Ответ на контрольный вопрос слишком длинный</div>
</div>
<div data-block="control_phone" class="control control_name_phone">
<div class="control__label control__label_name_phone">
<label for="phone_number">Мобильный телефон</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
<input type="text" autocomplete="off" name="phone_number" id="phone_number" value="" class="control__input control__input_name_phone">
</div>
<div class="phone-comment">например, +7 921 323 12 55</div>
<div class="control__error control__error__phone_badphonenumber g-hidden">Некорректный номер телефона</div>
<div class="control__error control__error__phone_missingvalue g-hidden">Пожалуйста, укажите номер телефона</div>
</div>
<div data-block="control_captcha" class="control control_name_captcha text">
<div class="control__label control__label_name_captcha">
<label for="answer">Введите символы:</label>
</div>
<div class="control__msg">
</div>
<div class="control__cntrl">
</div>
<script src="/st//js/soundmanager/soundmanager2-nodebug-jsmin.js">
</script>
<div class="audio_system_failed g-hidden">Не получилось запустить аудио, попробуйте обновить браузер</div>
<div class="captcha__auto-width-container">
<div class="captcha__recognize">
<div class="captcha__captcha">
<img src="https://i.captcha.yandex.net/image?key=10Y0lVllyEfy0S14mwjsPzWLKWYorNJi" class="captcha__captcha__text">
<button class="button captcha__captcha__audio play" type="button">
<span class="button-content play">
</span>
<span class="button-content playing">
</span>
<span class="button-content loading">
</span>
</button>
</div>
<div class="captcha__arrow">
</div>
<div class="captcha__input-wrap">
<input type="text" autocomplete="off" name="answer" id="answer" class="control__input control__input_name_captcha">
</div>
</div>
<div class="captcha__switch">
<a class="pseudo_link another" href="#">Другой код</a>
<a class="pseudo_link switch_to_audio" href="#">Послушать код</a>
<a class="pseudo_link switch_to_text" href="#">Текстовый код</a>
</div>
</div>
<input type="hidden" value="10Y0lVllyEfy0S14mwjsPzWLKWYorNJi" name="key" class="captcha_key">
<input type="hidden" value="text" name="captcha_mode" class="captcha_mode">
<div class="control__error control__error__captcha_missingvalue g-hidden">Необходимо ввести символы</div>
<div class="control__error control__error__captcha_captchalocate g-hidden">Ошибка проверки контрольных символов. Попробуйте еще раз.</div>
<div class="control__error control__error__captcha_incorrect g-hidden">Вы неверно ввели символы. Попробуйте еще раз</div>
</div>
<div data-block="control_eula" class="control control_name_eula">
<input type="checkbox" checked="" id="eula_accepted" name="eula_accepted">
<div class="control__label control__label_name_eula">
<label for="eula_accepted">Нажимая кнопку «Зарегистрироваться», я принимаю условия <a target="_blank" href="//legal.yandex.ru/rules/" class="b-link b-link_form b-link_pseudo_yes trigger">
<span class="b-link__inner">Пользовательского соглашения</span>
</a> <div class="b-eula content">
<div class="l-indent-small">
<iframe src="//legal.yandex.ru/rules/?mode=text&lang=ru"> </iframe>
</div>
</div> и даю своё согласие Яндексу на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года №152-ФЗ «О персональных данных», на условиях и для целей, определенных <a href="//legal.yandex.ru/confidential/" target="_blank" class="b-link b-link_form b-link_pseudo_yes trigger2">
<span class="b-link__inner">Политикой конфиденциальности</span>
</a>.<div class="b-eula content2">
<div class="l-indent-small">
<iframe src="//legal.yandex.ru/confidential/?mode=text&lang=ru"> </iframe>
</div>
</div>
</label>
</div>
<div class="control__error control__error__eula_missingvalue g-hidden">Для продолжения вы должны принять условия Пользовательского соглашения</div>
</div>
<div data-block="control_submit" class="control control_name_submit">
<button type="submit" class="control_name_submit__button">
<span class="button-content">Зарегистрироваться</span>
</button>
</div>
</form>
#cs ----------------------------------------------------------------------------
yandex.mail.reg 2.0
AutoIt Version: 3.3.10.2
Author: alex33
#ce ----------------------------------------------------------------------------
#include <IE.au3>
Global $oReq, $oHTML, $oSC, $sUrl, $sUrlImg, $sUserAgent, $sSendStr
Global $SetCookie = "", $Cookie = ""
$oReq = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTML = ObjCreate("HTMLFILE")
$oSC = ObjCreate("ScriptControl")
If Not IsObj($oReq) Or Not IsObj($oHTML) And Not IsObj($oSC) Then
MsgBox(16, 'Error', 'Create object error')
Exit 1
EndIf
$oSC.Language = "JavaScript"
$a1 = MsgBox(65, "HttpRequest", "example 1 yandex mail reg")
If $a1 <> 1 Then
Exit
EndIf
$sUrl = 'https://passport.yandex.ru/registration/mail?from=mail&require_hint=1&origin=hostroot_yellbox_texttags&retpath=https%3A%2F%2Fpassport.yandex.ru%2Fpassport%3Fmode%3Dsubscribe%26from%3Dmail%26retpath%3Dhttps%253A%252F%252Fmail.yandex.ru'
$sUserAgent = 'Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0'
HttpSetUserAgent($sUserAgent)
; цикл (для сокращения кода)
; Я сначала хотел сделать функцию, но потом передумал и сделал цикл, посчитав что это в данном конкретном случае будет удобнее...
$sSendStr = ''
For $iRequestCount = 1 To 2
$oError = ObjEvent('AutoIt.Error', 'ErrorFunc')
Switch $iRequestCount
Case 1
$oReq.Open('GET', $sUrl, False)
Case 2
$oReq.Open('POST', $sUrl, False)
$oReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
EndSwitch
$oReq.SetRequestHeader('User-Agent', $sUserAgent)
$oReq.SetRequestHeader('Cache-Controle', 'no-cach')
If $Cookie <> "" Then $oReq.SetRequestHeader('Cookie', $Cookie)
$oReq.SetRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
$oReq.SetRequestHeader('Accept-Language', 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3')
;$oReq.SetRequestHeader('Accept-Encoding', 'gzip, deflate')
$oReq.SetRequestHeader('Connection', 'keep-alive')
$oReq.Send($sSendStr)
$Status = $oReq.Status
$StatusText = $oReq.StatusText
$GetAllResponseHeaders = $oReq.GetAllResponseHeaders()
If StringInStr($GetAllResponseHeaders, "Set-Cookie:") Then
$SetCookie = $oReq.GetResponseHeader("Set-Cookie")
$Cookie = _SetCookieParseV2($GetAllResponseHeaders)
EndIf
$ResponseText = $oReq.ResponseText
MsgBox(0, 'Status end StatusText', 'Status: ' & $Status & @CRLF & 'StatusText: ' & $StatusText)
MsgBox(0, "GetAllResponseHeaders", $GetAllResponseHeaders)
If $SetCookie <> "" Then MsgBox(0, "Set-Cookie", $SetCookie)
If $Cookie <> "" Then MsgBox(0, "Cookie", $Cookie)
;MsgBox(0, "ResponseText", $ResponseText)
$oError = 0
If $iRequestCount = 1 Then
$oHTML.Write($ResponseText)
$oForm = $oHTML.forms.item(0)
$oElems = _IETagNameAllGetCollection($oForm)
$oImg = $oHTML.images.item(1)
$sUrlImg = $oImg.src
ConsoleWrite('Image URL: ' & $sUrlImg & @CRLF)
For $oElem In $oElems
$nodeName = $oElem.nodeName
If Not StringRegExp($nodeName, '(INPUT|TEXTAREA|SELECT)') Then ContinueLoop
$nodeType = $oElem.nodeType
$type = $oElem.type
$name = $oElem.name
Switch $name
Case 'firstname'
_IEFormElementSetValue($oElem, "Имя")
Case 'lastname'
_IEFormElementSetValue($oElem, "Фамилия")
Case 'login'
_IEFormElementSetValue($oElem, "TVOYA_pochta")
Case 'password'
_IEFormElementSetValue($oElem, "TVOY_PAROL1234567890")
Case 'password_confirm'
_IEFormElementSetValue($oElem, "TVOY_PAROL1234567890")
Case 'hint_question_id'
#cs
0 = не выбран
1 = Девичья фамилия матери
2 = Любимое блюдо
3 = Почтовый индекс родителей
4 = Дата рождения бабушки
5 = Ваше прозвище в школе
6 = Номер паспорта
7 = Пять последних цифр кред. карты
8 = Пять последних цифр ИНН
9 = Ваш любимый номер телефона
99 = Задайте собственный вопрос
#ce
_IEFormElementSetValue($oElem, "5")
Case 'hint_question'
; ID 99 only
; 99 = Задайте собственный вопрос
_IEFormElementSetValue($oElem, "")
Case 'hint_answer'
_IEFormElementSetValue($oElem, "Программист-комповщик")
Case 'phone_number'
_IEFormElementSetValue($oElem, "+79004121366")
Case 'answer'
; Введите символы
_IEFormElementSetValue($oElem, "ответ код на картинке")
EndSwitch
$value = _IEFormElementGetValue($oElem)
;ConsoleWrite(StringFormat("----\r\n nodeName: %s\r\n nodeType: %s\r\n type: %s\r\n name: %s\r\n value: %s\r\n----\r\n", $nodeName, $nodeType, $type, $name, $value))
$sSendStr &= '&' & $name & '=' & encodeURIComponent($value)
Next
$sSendStr = StringReplace($sSendStr, '&', '', 1)
ConsoleWrite($sSendStr & @CRLF)
$oForm.action = $sUrl
EndIf
Next
Func ErrorFunc()
MsgBox(16, 'COM Error', $oError.description)
Exit 2
EndFunc ;==>ErrorFunc
Func encodeURIComponent($sTxt)
Return $oSC.Eval('encodeURIComponent("' & $sTxt & '");')
EndFunc ;==>encodeURIComponent
Func decodeURIComponent($sTxt)
Return $oSC.Eval('decodeURIComponent("' & $sTxt & '");')
EndFunc ;==>decodeURIComponent
Func _SetCookieParseV2($AllResponseHeaders)
; function copy rus forum
$sCOOKIES = ""
$aResponseHeaders = StringSplit($AllResponseHeaders, @CRLF)
For $i = 1 To $aResponseHeaders[0]
If StringLeft($aResponseHeaders[$i], 10) = 'Set-Cookie' Then
$iPozSim = StringInStr($aResponseHeaders[$i], ';')
$sCOOKIES &= StringMid($aResponseHeaders[$i], 13, $iPozSim - 13) & '; '
EndIf
Next
$sCOOKIES = StringMid($sCOOKIES, 1, StringLen($sCOOKIES) - 2)
Return $sCOOKIES
EndFunc ;==>_SetCookieParseV2