PDA

Просмотр полной версии : [Помогите!] Авторизация на my-truth.ru


*xalyava*
02.09.2011, 20:43
Инфо от charles`a :

как я понял авторизация происходит тут:

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

дальше идет редирект:


[Ссылки могут видеть только зарегистрированные и активированные пользователи]ваш логин


код такой:

procedure TForm1.Button1Click(Sender: TObject);
var
list: TStringList;
s,s1: string;

begin

list:= TStringList.Create;

try


list.Add('login='+UTF8Encode(Edit1.Text));
list.Add('password='+UTF8Encode(Edit2.Text));
s:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',list);


finally
list.Free;


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

doctor_flasher
04.09.2011, 18:40
Учи матчасть. В пакете идет что-то типа этого: utf8=%E2%9C%93&authenticity_token=eZNOg6thq4KWrHF24jP2Ct7KrgJCpZh WzkGA27Ferxg%3D&returnto=&login=doctor_flasher&password=23423423432&remember_me=1. Ничего не заметил?

list.Add('utf8=%E2%9C%93');
list.Add('authenticity_token=' + auth);
list.add('returnto=');
list.Add('login='+UTF8Encode(Edit1.Text));
list.Add('password='+UTF8Encode(Edit2.Text));
list.Add('remember_me=' + remember);
s:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',list);

auth парсишь из кода страницы (<input name="authenticity_token" type="hidden" value="eZNOg6thq4KWrHF24jP2Ct7KrgJCpZhWzkGA27Ferxg=" />), а в remember можешь либо 0, либо 1 пихать (это String, да)

*xalyava*
04.09.2011, 18:54
Учи матчасть. В пакете идет что-то типа этого: utf8=%E2%9C%93&authenticity_token=eZNOg6thq4KWrHF24jP2Ct7KrgJCpZh WzkGA27Ferxg%3D&returnto=&login=doctor_flasher&password=23423423432&remember_me=1. Ничего не заметил?

list.Add('utf8=%E2%9C%93');
list.Add('authenticity_token=' + auth);
list.add('returnto=');
list.Add('login='+UTF8Encode(Edit1.Text));
list.Add('password='+UTF8Encode(Edit2.Text));
list.Add('remember_me=' + remember);
s:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',list);

auth парсишь из кода страницы (<input name="authenticity_token" type="hidden" value="eZNOg6thq4KWrHF24jP2Ct7KrgJCpZhWzkGA27Ferxg=" />), а в remember можешь либо 0, либо 1 пихать (это String, да)

authenticity_token заметил только вчера вечером)) спарсил его, но так и не смог зайти!!

P.s. при логине передаются на сайт только 3 "формы" :
логин, пароль, authenticity_token , вот я и подумал, что остальное (remember_me и т.д.) не обязательно

doctor_flasher
04.09.2011, 18:58
вот я и подумал, что остальное (remember_me и т.д.) не обязательно
это зависит от разработчиков. Я не удосужился проверить. В любом случае, тебе нужно отправить auth и перехватить куки. А, и на странице с логином у меня еще до авторизации сразу какие-то куки пришли. У idhttp своего AllowCookies:=TRUE сделай

*xalyava*
04.09.2011, 19:04
это зависит от разработчиков. Я не удосужился проверить. В любом случае, тебе нужно отправить auth и перехватить куки. А, и на странице с логином у меня еще до авторизации сразу какие-то куки пришли. У idhttp своего AllowCookies:=TRUE сделай

AllowCookies:=TRUE стоят изначально, редирект включен тоже, не заходит, вот код:


procedure TForm1.Button1Click(Sender: TObject);
var
sub: TStringList;
s,s1,s2,s3,s4: string;
begin

Sub:= TStringList.Create;
RegExp:=TRegExpr.Create;
try

sub.Add('utf8=%E2%9C%93');
sub.add('returnto=');
sub.Add('login='+UTF8Encode(Edit1.Text));
sub.Add('password='+UTF8Encode(Edit2.Text));
sub.Add('remember_me=1');
RegExp.Expression:= 'authenticity_token"(.*?)value="(.*?)" />';
if RegExp.Exec(s)then
sub.add(RegExp.Match[2]);

s:= id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',sub);



RegExp.Expression:= '<span>Имя:</span>(.*?)<span class="';
if RegExp.Exec(s)then
memo1.lines.add(RegExp.Match[1]);





finally
sub.Free;
RegExp.Free;
end;
end;

doctor_flasher
04.09.2011, 19:54
исходник: _[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Все работает. Специально в архив екзе не запихал, чтоб не подумал, что троян. Там все должно быть понятно

*xalyava*
05.09.2011, 16:27
исходник: _[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Все работает. Специально в архив екзе не запихал, чтоб не подумал, что троян. Там все должно быть понятно


спасибо, я авторизовался по другому, кому интересно:
procedure TForm1.Button1Click(Sender: TObject);
var
sub: TStringList;
s,s1,s2,s3,s4: string;
begin

Sub:= TStringList.Create;
RegExp:=TRegExpr.Create;
try

sub.Add('utf8=%E2%9C%93');
sub.add('returnto=');
sub.Add('login='+UTF8Encode(Edit1.Text));
sub.Add('password='+UTF8Encode(Edit2.Text));
sub.Add('remember_me=1');

s1:=id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]');

RegExp.Expression:= 'authenticity_token"(.*?)value="(.*?)" />';
if RegExp.Exec(s1)then
sub.add(RegExp.Match[2]);

s:= id[Ссылки могут видеть только зарегистрированные и активированные пользователи]('[Ссылки могут видеть только зарегистрированные и активированные пользователи]',sub);

finally
sub.Free;
RegExp.Free;
end;
end;