1

Тема: AHK: Авторизация на сайте

Добрый день.
Возможно ли средствами AHK послать логин и пароль от личного кабинета (например МТС или провайдеру) для последующего парсинга (баланс, минуты, остаток дней и т.п.) кода? Т.е. надо получить страницу с данными.
C wininet.dll подозреваю надо работать, но информации на форуме кот наплакал, а на офффоруме боюсь заблудиться.
В идеале хотелось бы сделать программу, ведущую статистику.

2

Re: AHK: Авторизация на сайте

Вы ничего не путаете?
Как может логин и пароль содержать баланс, минуты, остаток дней и т. п.? Зачем посылать свои логин и пароль провайдеру? Может быть Вы и есть провайдер?

P. S.: Просто не люблю нырять в потоки сознания.

3

Re: AHK: Авторизация на сайте

Нет, просто получить страницу с балансом невозможно без авторизации на сайте.
Вот здесь вроде написано про аутентификацию, но не разберусь.

4 (изменено: Grey, 2013-01-31 17:33:59)

Re: AHK: Авторизация на сайте

oIE:=ComObjCreate("InternetExplorer.Application")
oIE.navigate("https://login.mts.ru:443/amserver/UI/Login?service=lk&goto=https://lk.ssl.mts.ru/")

While, oIE.busy
   Sleep, 500

; создаются "свои" атрибуты и присваиваются им нужные значения
newValue1:=oIE.document.createAttribute("value"), newValue1.nodeValue:="9999999999" ; номер
newValue2:=oIE.document.createAttribute("value"), newValue2.nodeValue:="999999" ; пароль
; подменяются атрибуты у конкретных узлов
oIE.document.getElementById("IDToken1").setAttributeNode(newValue1)
oIE.document.getElementById("IDToken2").setAttributeNode(newValue2)
; эмулируется клик
oIE.document.getElementById("Login.Submit").click

; переадресация довольно медленная, причём были такие прецеденты,
; когда после авторизации в личный кабинет я так и не попадал...
Loop
   Sleep, 750
Until, oIE.locationURL="https://lk.ssl.mts.ru/" Or A_Index=10
If !oIE.locationURL
{
   MsgBox, 262160, % "An error occured:", % "URL is unreachable.", % 1.5
   ExitApp
}

; мы попали в кабинет, но нужные нам узлы или не существуют (на странице они иногда отсутствуют),
; или всё ещё без значений, проверять начнём с тех, что грузятся дольше остальных
Loop
{
   If oIE.document.querySelector("div[id=wdg-1740]") And !points
   {
      Loop
         Sleep, 500
      Until, oIE.document.querySelector("div[id=wdg-1740] h3").children[1].textContent Or A_Index=5

      points:=oIE.document.querySelector("div[id=wdg-1740] h3").children[1].textContent
      textNode:=oIE.document.querySelector("div[id=wdg-1740] h3").childNodes.item(4).wholeText
   }
   If oIE.document.querySelector("div[id=wdg-1774]") And !tariff
   {
      Loop
         Sleep, 500
      Until, oIE.document.querySelector("div[id=wdg-1774] h3").children[1].textContent Or A_Index=5

      tariff:=oIE.document.querySelector("div[id=wdg-1774] .h-l").children[0].textContent
   }
   Sleep, 500
}
Until, (points And tariff) Or A_Index=3
; этот узел проверять нет необходимости, он всегда существует (изначально показывая нули),
; но пока проверялись другие, он уже обновился
balance:=oIE.document.querySelector(".h-l").children[0].innerText
onDate:=oIE.document.querySelector(".h-l").children[1].innerText
oIE.quit

MsgBox, 262208
      , % tariff ? tariff:A_Space
      , % balance "`n"onDate (points ? "`n"Trim(textNode)": "points:"")

5

Re: AHK: Авторизация на сайте

К сожалению, скрипт не дал результата. Тем более он открыл браузер (почему то Хром, хотя пользую Мозиллу), что уже исключает его использование, и страницу для ввода пароля, на этом все закончилось.

6

Re: AHK: Авторизация на сайте

Zohann пишет:

Тем более он открыл браузер (почему то Хром...

Забавно, я запускал экземпляр ИЕ, в скрытом режиме...

7

Re: AHK: Авторизация на сайте

Возможно ли средствами AHK послать логин и пароль от личного кабинета (например МТС или провайдеру) для последующего парсинга (баланс, минуты, остаток дней и т.п.) кода? Т.е. надо получить страницу с данными.

Что значит "получить страницу"? Открыть в браузере и ввести логин/пароль?
Я сам так проверяю 30 номеров, правда автоматизация не полная, остаток пока вручную переписываю


WinActivate, ahk_class OperaWindowClass, 
WinWaitActive, ahk_class OperaWindowClass, 
sleep 500
Send, ^t ; создаем новую вкладку
sleep 500
Send, {F8} ; активируем адресную строку
sleep 500
send, https://my.kyivstar.ua{ENTER} ;открываем сайт Киевстар
MsgBox, Ждем полной загрузки страницы
send {ESC}{TAB}{+}38096xxxxxxx{TAB}password{ENTER} ; {ESC}-убрать фокус из поля логина, если он вдруг там есть, {TAB}-поставить фокус, вводим логин и пароль

8

Re: AHK: Авторизация на сайте

misha_057 пишет:

Что значит "получить страницу"? Открыть в браузере и ввести логин/пароль?

Нужно получить баланс (например с личного кабинета МТС) или остаток дней до конца учетного периода (например провайдер интернета). Причем получить без открытия браузера и совершения действий в нем, типа F8, Tab и т.д., это не наш уровень:).
Дело в том что просто скопировать страницу не получится (например функцией URLDownloadToFile), вернется лишь код со страницы авторизации. Значит надо авторизоваться, т.е. послать POST запрос со своими логином и паролем (+ параметры) и получить ответ в виде кода страницы.
А дальше уже дело техники, парсим и т.д.
Примеры брал тут (HTTPRequest, httpQuery), менял параметры, ну никак не получается.
А сподвигли меня на это программы на Android, получающие балансы с личных кабинетов, вот только я с Jawa знаком поверхностно.
В переспективе можно вести статистику по звонкам, расходы, в случае с интернетом выводить напоминание о пополнении баланса, и еще много чего.

9

Re: AHK: Авторизация на сайте

С Jawa мало кто знаком
Примера из сообщения #4 достаточно.

10

Re: AHK: Авторизация на сайте

creature.ws пишет:

Примера из сообщения #4 достаточно.

Говорю же он у меня браузер открывает, а должен вообще его открывать?
Никто разве с этими функциями не работал? Может они вообще не подходят под это дело?