Вверх ↑
Этот топик читают: Гость
Ответов: 4641
Рейтинг: 334
#1: 2011-02-12 10:48:09 ЛС | профиль | цитата
Предлагаю задачу на написание статьи об авторизации на сайтах.
В статье необходимо описать: какие бывают методы авторизации, чем они отличаются, как их применить в hiasm.
Так же необходимо описать применения сторонних программ для поиска нужных параметров и значений.
Читателя необходимо "провести" по схеме.
Делаем схемы согласно Рекомендациям построения схем. На схеме пишем комментарии.
Для теста используем несколько разных задач:
Авторизация для отправки и приема сообщений Вконтакте. Сообщения принемаем и отправляем из окна программы.
Авторизация для открытия страницы Входящие на почтовом сервисе (rambler.ru и mail.ru). Страница открывается в браузере по умолчанию.
Третий вариант предлагаем сами.

за все 300р.

Большая часть есть на форуме. Достаточно оформить, окультурить, протестить.
Так что кто хочет заработать пишите.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
vip
#1.1контекстная реклама от партнеров
Ответов: 294
Рейтинг: 64
#2: 2011-02-12 21:59:14 ЛС | профиль | цитата
Не претендую на авторство развернутой статьи по всем пунктам и тем более на "кучу бабла", но могу безвозмездно внести свою лепту, дабы немного облегчить труд товарища, который возможно за это возьмется. "Умными словами" описывать смысла нет, такой инфы в интернете полно, надо попроще... Тем более я ярый сторонник МНТ (Метод Научного Тыка).
В общем главное нАчать, а уж потом расширить и углубить © М. С. Горбачев.
Попробовал описать самое простое из требуемых задач, а именно авторизацию на почтовых серверах (сайтах) путем составления url, включающего в себя логин/пароль.
В примере авторизация на:
1. Mail.ru (mail.ru, inbox.ru, bk.ru, list.ru);
2. Rambler.ru (rambler.ru, lenta.ru, myrambler.ru, autorambler.ru, ro.ru, r0.ru);
3. QIP.ru (pochta.ru, fromru.com, front.ru, hotbox.ru, hotmail.ru, krovatka.su, land.ru, mail15.com, mail333.com, newmail.ru, nightmail.ru, nm.ru, pisem.net, pochtamt.ru, pop3.ru, rbcmail.ru, smtp.ru)
4. Yandex.ru

------------------------------------------------------------------------------------------------------------
И так.

ФОРМИРОВАНИЕ URL ДЛЯ ЗАХОДА В ПОЧТОВЫЙ ЯЩИК УЖЕ АВТОРИЗИРОВАННЫМ.

оБЩАЯ ИНФОРМАЦИЯ:
Обычно, чтобы авторизироваться/залогиниться на сайте, нам необходимо заполнить несколько полей, в частности логин и пароль.
После того, как они введены и нажатия кнопки "ВХОД" (или аналогичной). серверу передаются введенные нами параметрами, с именами полей ввода,

соответствующих данным.
Соответственно, если узнать, как называются поля ввода, можно сформировать url в одну строчку, куда внести имена полей и соответствующие им данные

(логин/пароль), можно зайти на сайт авторизированным по одной ссылке.
Узнать это можно посмотрев исходный HTML код страницы с авторизацией или специальными программами перехватывающие http пакеты (например

HttpAnalyzer).
Рассмотрим первый вариант, не требующий дополнительного софта:

Для примера взят почтовый сервис rambler.ru.
Итак начнем:

1. Заходим на страницу авторизации Rambler: http://id.rambler.ru/script/auth.cgi
2. Включаем в браузере просмотр кода HTML (как правило, правой кнопкой мыши на странице, и в выпадающем меню будет этот пункт)
3. Видим там много "лабуды", среди которой такие строки:
<!-- /header -->
<h2><span>Авторизация на&nbsp;Рамблере</span></h2>

Это явно похоже на то, что мы ищем, ниже видим следующее:
<form method="post" action="auth.cgi?mode=login" name="auth_form">
<input type="hidden" name="from" value="">
<input type="hidden" name="back" value="http://mail.rambler.ru/">

Из этого нам понадобится action="auth.cgi?mode=login" - и так, начало url для авторизации будет выглядеть так:
http://id.rambler.ru/script/auth.cgi?mode=login - запомним, и двигаемся дальше:
<div id="loginform" class="stage active">
<em class="ct"><em></em></em>
<div class="wrapper">
<p class="rs-element">
<label for="login">Логин:</label>
<span class="indicator">
<input type="text" id="login" class="text" name="login" maxlength="129" value="" tabindex="1"

тут описывается ввод логина, нам нужно найти имя параметра name=, такое есть: name="login", значит первый параметр, который надо передать

серверу будет login.
Прибавляем его к нашей строке через знак &, получается:
http://id.rambler.ru/script/auth.cgi?mode=login&login=%1 где %1 - это настоящий логин от почты. Смотрим дальше:
<select id="domain" name="domain" title="Выберите домен" tabindex="3">

<option value="rambler.ru" selected="selected">@rambler.ru</option>

<option value="lenta.ru">@lenta.ru</option>

<option value="myrambler.ru">@myrambler.ru</option>

<option value="autorambler.ru">@autorambler.ru</option>

<option value="ro.ru">@ro.ru</option>

<option value="r0.ru">@r0.ru</option>

Это список доменов, так как у сервиса Rambler адреса почты могут быть не только собственно @rambler.ru, но и, как видно выше, @lenta.ru и другие.
Как и ранее ищем название параметра name= и находим name="domain", значит следующим параметром мы добавим через & domain, а в значение ему

пропишем домен, в котором наша почта, например rambler.ru. Прибавим это к нашей строке:

http://id.rambler.ru/script/auth.cgi?mode=login&login=%1&domain=rambler.ru

Идем далее:
<p class="rs-element">
<label for="passwd">Пароль:</label>
<span class="indicator"><input type="password" id="passwd" class="text" name="passw" value="" tabindex="1"

title="Ваш пароль"></span>

Здесь речь идет явно о пароле... как обычно находим name=, а именно name="passw", значит последним параметром будет passw, а его значением -

реальный пароль от почты. Добавляем к ранее заготовленной строке, как всегда через знак &.

http://id.rambler.ru/script/auth.cgi?mode=login&login=%1&domain=rambler.ru&passw=%3 где %3 это пароль от почты.

Эту строку со знаками подстановки (%1,%2,%3) мы можем использовать в HiAsm, в элементе FormatStr, что можно посмотреть в приложенной

схеме-примере.

Вот и все!
Предположим, что у нас есть почтовый ящик hiasm@rambler.ru c паролем pass123.
Тогда для того чтобы зайты в этот ящик сразу авторизированным, нам понадобится составить такую строку:
http://id.rambler.ru/script/auth.cgi?mode=login&login=hiasm&domain=rambler.ru&passw=pass123

Схема с примерами прилагается.
Add(MainForm,2953706,126,154)
{
Width=530
Height=421
Caption="Mail_Auth_Url"
BorderStyle=1
Position=1
}
Add(ChildGroupBox,4231659,245,280)
{
@Hint=#10:Rambler.ru|
link(onEvent1,6410765:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,12527810,21,21)
{
EventCount=1
Width=328
Height=172
}
Add(GroupBox,16620451,35,105)
{
Left=20
Top=115
Width=483
Height=69
Font=[MS Sans Serif,10,1,8421504,1]
Caption="Rambler.ru"
}
Add(Edit,11962568,140,49)
{
Left=15
Top=25
Width=145
Text="E-mail/Login"
}
Add(Edit,12578910,238,49)
{
Left=280
Top=25
Width=145
Text="Password"
}
Add(Button,11530400,126,133)
{
Left=435
Top=25
Width=35
Caption="Ok"
link(onClick,11170188:doString,[])
}
Add(ComboBox,14165389,189,35)
{
Left=185
Top=25
Width=85
Height=21
Strings=#10:rambler.ru|8:lenta.ru|12:myrambler.ru|14:autorambler.ru|5:ro.ru|5:r0.ru|
Text="Domain"
}
Add(Label,12238945,35,49)
{
Left=165
Top=29
Width=16
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="@"
}
Add(FormatStr,11170188,189,133)
{
DataCount=3
Mask="http://id.rambler.ru/script/auth.cgi?mode=login&login=%1&domain=%2&passw=%3"
link(onFString,12527810:onEvent1,[(330,139)(330,27)])
link(Str1,11962568:Text,[(195,107)(146,107)])
link(Str2,14165389:String,[])
link(Str3,12578910:Text,[(209,107)(244,107)])
}
END_SDK
Add(Message,3427960,455,238)
{
Caption="Внимание!"
Type=2
link(onMessage,9106457:doCompare,[])
}
Add(ChildGroupBox,16052855,245,336)
{
@Hint=#6:QIP.ru|
link(onEvent1,10454019:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,896920,21,21)
{
EventCount=1
Width=328
Height=172
}
Add(GroupBox,10849477,35,105)
{
Left=20
Top=205
Width=483
Height=69
Font=[MS Sans Serif,10,1,8421504,1]
Caption="QIP.ru"
}
Add(Edit,8036956,140,49)
{
Left=15
Top=25
Width=145
Text="E-mail/Login"
}
Add(Edit,8499408,238,49)
{
Left=280
Top=25
Width=145
Text="Password"
}
Add(Button,15021483,126,133)
{
Left=435
Top=25
Width=35
Caption="Ok"
link(onClick,2639517:doString,[])
}
Add(ComboBox,16010452,189,35)
{
Left=185
Top=25
Width=85
Height=21
Strings=#9:pochta.ru|10:fromru.com|8:front.ru|9:hotbox.ru|10:hotmail.ru|11:krovatka.su|7:land.ru|10:mail15.com|11:mail333.com|10:newmail.ru|12:nightmail.ru|5:nm.ru|9:pisem.net|11:pochtamt.ru|7:pop3.ru|10:rbcmail.ru|7:smtp.ru|
Text="Domain"
}
Add(Label,6343445,35,49)
{
Left=165
Top=29
Width=16
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="@"
}
Add(FormatStr,2639517,189,133)
{
DataCount=3
Mask="http://mail.qip.ru/auth/logon?reason=login&user=%1&dom=%2&pass=%3"
link(onFString,896920:onEvent1,[(330,139)(330,27)])
link(Str1,8036956:Text,[(195,107)(146,107)])
link(Str2,16010452:String,[])
link(Str3,8499408:Text,[(209,107)(244,107)])
}
END_SDK
Add(ChildGroupBox,11392413,245,392)
{
@Hint=#9:Yandex.ru|
link(onEvent1,10454019:doWork3,[(312,398)])
}
BEGIN_SDK
Add(EditMulti,9960813,21,21)
{
EventCount=1
Width=328
Height=172
}
Add(GroupBox,8078234,35,105)
{
Left=20
Top=300
Width=483
Height=69
Font=[MS Sans Serif,10,1,8421504,1]
Caption="Yandex.ru"
}
Add(Edit,5168354,140,49)
{
Left=15
Top=25
Width=145
Text="E-mail/Login"
}
Add(Edit,10260283,238,49)
{
Left=280
Top=25
Width=145
Text="Password"
}
Add(Button,6643387,126,133)
{
Left=435
Top=25
Width=35
Caption="Ok"
link(onClick,9442431:doString,[])
}
Add(Label,15511257,35,49)
{
Left=165
Top=29
Width=96
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="@yandex.ru"
}
Add(FormatStr,9442431,189,133)
{
Mask="http://passport.yandex.ru/passport?mode=auth&retpath=http://mail.yandex.ru/messages&login=%1&passwd=%2"
link(onFString,9960813:onEvent1,[(330,139)(330,27)])
link(Str1,5168354:Text,[(195,107)(146,107)])
link(Str2,10260283:Text,[(202,107)(244,107)])
}
END_SDK
Add(ChildGroupBox,6607427,245,231)
{
@Hint=#7:Mail.ru|
link(onEvent1,12679833:doWork2,[])
}
BEGIN_SDK
Add(EditMulti,16589621,21,21)
{
EventCount=1
Width=552
Height=305
}
Add(GroupBox,2906625,35,105)
{
Left=20
Top=20
Width=483
Height=69
Font=[MS Sans Serif,10,1,8421504,1]
Caption="Mail.ru"
}
Add(Edit,6093902,140,49)
{
Left=15
Top=25
Width=145
Text="E-mail/Login"
}
Add(Edit,11684213,238,49)
{
Left=280
Top=25
Width=145
Text="Password"
}
Add(Button,12583785,126,133)
{
Left=435
Top=25
Width=35
Caption="Ok"
link(onClick,5955985:doString,[])
}
Add(ComboBox,9408049,189,35)
{
Left=185
Top=25
Width=85
Height=21
Strings=#7:mail.ru|8:inbox.ru|5:bk.ru|7:list.ru|
Text="Domain"
}
Add(Label,10084657,35,49)
{
Left=165
Top=29
Width=16
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="@"
}
Add(FormatStr,5955985,189,133)
{
DataCount=3
Mask="http://win.mail.ru/cgi-bin/auth?Login=%1&Domain=%2&Password=%3"
link(onFString,16589621:onEvent1,[(330,139)(330,27)])
link(Str1,6093902:Text,[(195,107)(146,107)])
link(Str2,9408049:String,[])
link(Str3,11684213:Text,[(209,107)(244,107)])
}
Add(hcVisualText,7180589,35,182)
{
Lines=#22:Формирование URL вида:|83:http://id.rambler.ru/script/auth.cgi?mode=login&login=%1&domain=rambler.ru&passw=%3|0:|66:где знаки подстановки (%1,%2,%3) будут заменены на соответственно:|29:%1=логин, %2=домен, %3=пароль|
Width=508
Height=102
}
END_SDK
Add(If_else,9106457,504,238)
{
Op2=Integer(6)
link(onTrue,13438922:doData,[])
}
Add(FormatStr,8173491,399,238)
{
DataCount=1
Mask="Сформирован следующий url:
%1

Хотите открыть его в браузере по-умолчанию?"
link(onFString,3427960:doMessage,[])
}
Add(WinExec,10133294,609,231)
{
}
Add(DoData,13438922,553,238)
{
link(onEventData,10133294:doShellExec,[])
link(Data,12626650:Value,[])
}
Add(Memory,12626650,553,189)
{
}
Add(Hub,13971332,350,231)
{
link(onEvent1,12626650:doValue,[(377,237)(377,195)])
link(onEvent2,8173491:doString,[])
}
Add(HubEx,12679833,308,231)
{
link(onEvent,13971332:doEvent1,[])
}
Add(HubEx,6410765,308,280)
{
Angle=3
link(onEvent,12679833:doWork3,[])
}
Add(HubEx,10454019,308,336)
{
Angle=3
link(onEvent,6410765:doWork3,[])
}
Add(hcVisualText,15087458,399,294)
{
Lines=#230:После формирования URL с введенными параметрами, выводится сообщение с этим URL (можно посмотреть, что получилось) и предложение открыть его в браузере по-умолчанию (При нажатии кнопки Ok будет осуществлен переход в почтовый ящик)|
Width=242
Height=130
}
Add(PointHint,11080946,126,231)
{
Info=#17:Внутри коммент =>|
Width=113
}
Add(PointHint,5869907,553,154)
{
Info=#17:Запоминаем строку|
Width=120
}
Add(PointHint,12786207,644,231)
{
Info=#24:Открываем url в браузере|
Width=148
}



карма: 0

2
Голосовали:Ravilr, Tad
Ответов: 16884
Рейтинг: 1239
#3: 2011-02-12 22:18:49 ЛС | профиль | цитата
Quest, а почему FLOOD
Хотел оценить, но на flood как-то...
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 294
Рейтинг: 64
#4: 2011-02-12 22:25:17 ЛС | профиль | цитата
Tad, просто во-первых, пока не удается "побороть" форум, не скачивается приложенная схема (кстати у вас она скачивается?), при попытке редактирования - режет.
А во-вторых - это только маленький кусочек от заявленных требований, только один пункт...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#5: 2011-02-12 22:41:06 ЛС | профиль | цитата
Схема error.
Quest писал(а):
это ... только один пункт...
Ну и напиши "продолжение следует"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#6: 2011-02-12 22:42:00 ЛС | профиль | цитата
Quest, я бы посоветовал FireBug-ом пользоваться (или его аналогами для других браузеров), так как иногда данные, отправляемые формой, дополняются с использованием javascript-а до их отправки на сервер.
карма: 1

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)