![]()  | 
	
 
  | 
| 
		 
			 
			#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); |