вот кодец PHP: idhttp1.AllowCookies:=true; idhttp1.HandleRedirects:=true; s:=idhttp1.get('http://win.mail.ru/cgi-bi/auth?Login=sososo@mail.ru&Password=trololo&Domain=mail.ru&level=1'); memo1.Lines.Add(s); в мемо получаем Code: код... <title> Вход в систему </title> <meta NAME="DESCRIPTION" CONTENT="Национальная почтовая служба @Mail.ru ...код кароче говоря не логинится. впопрос почему и что делать ?
вроде так Code: http://win.mail.ru/cgi-bi/auth?Login=[COLOR=Red]sososo[/COLOR]&Password=trololo&Domain=mail.ru&level=1
читай ВНИМАТЕЛЬНО мой пост. и делай как дядя XopHeT говорит. Он всегда сначала проверяет, прежде чем ляпнуть
Code: HTTP.HandleRedirects := True; HTTP.AllowCookies := True; HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0'; HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; HTTP.Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; HTTP.Request.CharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7'; Далее вытаскиваем Login, Domen, Pass отдельно... Login@Domen.ru:Pass Code: HTTP.Get('http://win.mail.ru/cgi-bin/auth?Login=' + Login + '&Password=' + Pass + '&Domain=' + Domen + '.ru&level=1'); Мой чекер так работает отлично тьфутьфутьфу не дай бог сглазить) 20акков только, что прогнал отсеял как надо без всяких UrlEncode, мне кажется заголовки играют свою роль
_http://www.delphisources.ru/pages/sources/internet/2010-year/authorization-mail.ru.html Мне в своё время очень помог.
Code: var s,l,d,p,z:string; begin idhttp1.AllowCookies:=true; idhttp1.HandleRedirects:=true; idhttp1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0'; idhttp1.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; idhttp1.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; idhttp1.Request.CharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; s:=memo1.Lines.Strings[0]; l:=copy(s,1,pos('@',s)-1); d:=copy(s,pos('@',s)+1,pos(':',s)-pos('@',s)-1); p:=copy(s,pos(':',s)+1,length(s)-pos(':',s)); memo1.Lines.Add(l); memo1.Lines.Add(d); memo1.Lines.Add(p); memo1.Lines.Add(idhttp1.Get('http://win.mail.ru/cgi-bin/auth?Login=' + L + '&Password=' + P + '&Domain=' + D + '.ru&level=1')); if pos('Войти',memo1.Lines.Text)<>0 then showmessage('DONT!login') else showmessage('LOGIN'); end; Вот написал как говорили, не получается нифига((( меня это уже бесит. раньше всё работало и Вконтакте через гет запрос и сюда. теперь нихрена.
Я почему-то всегда думал, что авторизируются через пост-запросы ) Хз каким извратом ты там занимаешься, вот тебе обсалютно рабочая авторизация. Адаптируй уже под себя Code: function MailLogIn(Login,Password: string): boolean; var PostData: TStringList; PageData: TStringList; Domain: string; begin result := false; PostData := TStringList.Create; PageData := TStringList.Create; try // Set settings Form1.IdHTTP1.Request.Host := 'http://mail.ru'; Form1.IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'; Form1.IdHTTP1.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; Form1.IdHTTP1.Request.AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; //Form1.IdHTTP1.Request.AcceptEncoding := 'gzip,deflate'; Form1.IdHTTP1.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7'; Form1.IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; Form1.IdHTTP1.Request.ContentLength := 112; Form1.IdHTTP1.AllowCookies := True; Form1.IdHTTP1.HandleRedirects := True; // Send post PostData.Add('page='); PostData.Add('post='); PostData.Add('login_form='); PostData.Add('Login='+Form1.Edit1.Text); Domain := Form1.ComboBox1.Text; Delete(Domain,1,1); PostData.Add('Domain='+Domain); PostData.Add('Password='+Form1.Edit2.Text); Form1.IdHTTP1.Post('http://win.mail.ru/cgi-bin/auth',PostData); // Get My World page PageData.Text := Form1.IdHTTP1.Get('http://my.mail.ru/'); if ValidText('http://my.mail.ru/','logout') then result := true; finally PostData.Free; PageData.Free; end; end;
PHP: http.Get('http://e.mail.ru/cgi-bin/enableuser?login='+login+'&domain='+domain+'&Password='+utf8encode(pass));
Это ведь не авторизация... а если вы просто про пример с utf8encode, то его пробывал и urlencode пробывал, уже всё перепробывал.
У меня отлично работает вот этот код: Code: procedure TForm1.Button1Click(Sender: TObject); var l,d,p:string; begin idhttp1.AllowCookies:=true; idhttp1.HandleRedirects:=true; L:='******'; P:='******'; D:='mail'; idhttp1.Get('http://win.mail.ru/cgi-bin/auth?Login=' + L + '&Password=' + P + '&Domain=' + D + '.ru&level=1'); memo1.lines.add(idhttp1.Get('http://my.mail.ru')); end;
у меня пароли типа -> Code: ..................@mail.ru:[+;dw7<`'( ..................@mail.ru:RrX\Pz~RA0 ..................@mail.ru:kE"Wo|hJ-q ..................@mail.ru:j32.DPBqT< Глотает нормалёк. А по поводу кириллицы -> У ТСа извращенный метод вытаскивания Login, Domen, Pass, не проще так: Code: S := 'mail@mail.ru'; Login := Copy(S, 0, Pos('@', S)-1); Domen := Copy(S, Pos('@', S)+1, Length(S)); Domen := Copy(Domen, 0, Pos('.ru', Domen)-1); Pass := Copy(S, Pos(':', S)+1, Length(S));
Что значит не авторизация? Всю жизнь по этой авторизации у меня софт работает, всё прекрасно. Авто куки выдаёт и вперед по любым страницам залогиненым.