![]() |
|
|
#1
|
|||
|
|||
|
Торможу уже три часа.
При обращении к сайту по адресу http://www.site.ru/auth/login/?auths...sword=PASSWORD идёт авторизация. Сниффером проверил - больше ничего не передаётся. Куки естественно ставятся. Ну вот почему не могу авторизоваться? Код:
var data:tstringlist;
PageProfile:string;
error:boolean;
begin
IdHTTP1.AllowCookies:=true;
IdHTTP1.HandleRedirects:=true;
data:=tstringlist.create;
data.Add('authsave=1');
data.Add('login=LOGIN');
data.Add('password=PASSWORD');
//http://www.site.ru/auth/login/?authsave=1&login=LOGIN&password=PASSWORD
error:=false;
try
PageProfile:=IdHTTP1.Post('http://www.site.ru/auth/login/', data);
Memo1.Lines.Add(PageProfile);
except
error:=true;
end;Плюнул на Delphi - достал любимый PHP: PHP код:
Авторизация проходит на ура. Я уже не знаю, где может быть ошибка. Гляньте пожалуйста свежим глазом. ![]() |
|
#2
|
||||
|
||||
|
попробуй еще поставить
Код:
idhttp1.request.useragent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)'; Мне однажды это помогло авторизоваться |
|
#3
|
|||
|
|||
|
Спасибо, попробую, но в свойствах idHTTP1 я прописал юзерагент. Сейчас вот с Synapse попробовал - проходит авторизация. А idHTTP какой-то заколдованный
![]() |
|
#4
|
||||
|
||||
|
А IdCookieManager (или как его там) юзаем?
|
|
#5
|
|||
|
|||
|
idHttp1.CookieManager := IdCookieManager1;
на форму кинул соответствующий компонент из indy misc - результат прежний |
|
#6
|
||||
|
||||
|
Точно все куки встают?
Caption кнопки должно отправляться? Попробуй TidMultiPartFormDataStream. |
|
#7
|
|||
|
|||
|
Цитата:
А вот как проверить пришли ли куки? За совет спасибо. Сейчас пересяду за домашний комп и попробую. |
|
#8
|
||||
|
||||
|
Через снифер.
Мне IE HTTP Analyzer 5 нравится... |
|
#9
|
|||
|
|||
|
Посидел часок со снифером. Уже запутался в том, как запрос отфутболивается по 301, 302 редиректам.
Да и сайт отдаёт непонятно в какой форме. Почитал тут, что правильно забирать нужно в потоковой форме. Раскроем данные. Может так сможет кто-то, что-то подсказать. Нужна авторизация на этом форуме: http://parapa.mail.ru/forums/ Он же http://www.parapa.ru/forums/ Адрес на который отправляются данные: http://www.parapa.ru/auth/login/ или http://parapa.mail.ru/auth/login/ Данные доступа: Login: gamesbots@mail.ru или GamesMaster (авторизуется и так и так) Pass: qwerty Передаваемые данные согласно снифферу. data.Add('authsave=0'); data.Add('login=gamesbots@mail.ru'); data.Add('password=qwerty'); Или если через TidMultiPartFormDataStream data.AddFormField('authsave','0'); data.AddFormField('login','GamesMaster'); data.AddFormField('password',qwerty'); PageProfile:=IdHTTP1.Post('http://www.parapa.ru/auth/login/', data); |
|
#10
|
||||
|
||||
|
Свежий пример авторизации на Mail.ru.
|
|
#11
|
||||
|
||||
|
Код:
function GetCookie(FText: TStringList): String;
var
N, I: Integer;
S: String;
begin
Result := '';
for N := 0 to FText.Count - 1 do
if Pos('set-cookie:', LowerCase(FText[N])) = 1 then
begin
S:= FText[N];
Delete(S, 1, Length('set-cookie: '));
I:= Pos(';', S);
S:= Copy(S, 1, I-1);
if Result <> '' then
Result := Result + '; ';
Result := Result + S;
end;
end;Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Data: TStringList;
Otvet: String;
S: String;
begin
Otvet:= IdHTTP1.Get('http://parapa.mail.ru/forums/');
IdHTTP1.CookieManager.AddCookie(GetCookie(IdHTTP1.Response.RawHeaders), 'parapa.mail.ru'); // добавляем сокет
IdHTTP1.Request.Referer:= 'http://parapa.mail.ru/forums/';
IdHTTP1.HandleRedirects:= False;
Data:= TStringList.Create;
Data.Add('login='+LabeledEdit1.Text);
if CheckBox1.Checked then
Data.Add('authsave=1');
Data.Add('password='+LabeledEdit2.Text);
try
Otvet:= IdHTTP1.Post('http://parapa.mail.ru/auth/login/', Data);
except
IdHTTP1.Request.Clear;
S:= IdHTTP1.Response.Location;
if Pos('err=', S) <> 0 then
Memo1.Lines.Add('Логин или пароль неверны!')
else
begin
Otvet:= Utf8ToAnsi(IdHTTP1.Get(IdHTTP1.Response.Location));
if Pos('Добро пожаловать', Otvet) <> 0 then
Memo1.Lines.Add('Успешно авторизовались!');
end;
end;
Data.Free;
end; |
|
#12
|
|||
|
|||
|
Ты мой спаситель! Огромное спасибо!
|
|
#13
|
||||
|
||||
|
Всегда пожалуйста.
Точно не знаю, но есть еще пост запрос после авторизации на http://parapa.mail.ru/forums/profile.php?do=dst |
|
#14
|
|||
|
|||
|
Есть один вопрос:
Цитата:
E2010 Incompatible types: 'TIdURI' and 'string' Нашёл топик, где обсуждается такая проблема - http://forum.vingrad.ru/forum/topic-...1913394/0.html Скорее всего дело в Indy судя по сообщениям. У меня версия 10.5.5 |
|
#15
|
||||
|
||||
|
Код:
var U:TIdURI;
begin
U:=TidURI.Create('parapa.mail.ru');
IdHTTP1.CookieManager.AddCookie(GetCookie(IdHTTP1.Response.RawHeaders),U); |