Не подкинет кто нить пример авторизации с idhttp , а то по многому пробывал и чет не катит,желательно builder Пробывал так HTML: AnsiString get_sid; AnsiString Name = "mr@mail.ru"; AnsiString Password = "****"; AnsiString current_id;get_sid = web->Get("http://login.vk.com/?act=login&email=maxr@mail.ru&pass=34x&expire=0"); get_sid = get_sid.Delete(1,get_sid.Pos("id='s' value='")+13); get_sid = get_sid.Delete(get_sid.Pos("'"),get_sid.Length()); current_id = get_sid; Cook->AddCookie("remixchk=5","vkontakte.ru"); Cook->AddCookie("remixsid="+get_sid,"vkontakte.ru"); TStringStream *respon = new TStringStream(); TStringList *post= new TStringList(""); post->Add("u=2&op=slogin&redirect=1&expire=0&to=bWFpbC5waHA-&s="+current_id); web->Post("http://vkontakte.ru/login.php",post,respon); Memo1->Text = respon->DataString; delete respon,post;
Писал как то) Code: procedure login; var html:string; s:string ; begin Form1.Label1.Caption:='Получам доступ в хранилище' ; html := form1.IdHTTP1.Get('http://vkontakte.ru/login.php?op=a_login_attempt'); if (html='vklogin') then begin Form1.Label1.Caption:='Обмениваемся информацией с хранилищем' ; html:=form1.IdHTTP1.Get('http://login.vk.com/?act=login&email=sss@ddd.ru&pass=pass&expire=&vk='); s:= RegexProc('value='''+'([\w]{15,80})',html); s:= RegexProc('[\w]{15,80}',s); Form1.IdHTTP1.HandleRedirects:=true; Form1.IdHTTP1.RedirectMaximum:=0; Form1.IdHTTP1.CookieManager:= form1.IdCookieManager1; Form1.IdHTTP1.AllowCookies:=true; Try html:= Form1.IdHTTP1.Get('http://vkontakte.ru/login.php?op=slogin&redirect=1&expire=0&to=&s='+s) ; Except ShowMessage('Неизвестная ошибка'); end; cook:= RegexProc('remixsid=([\w]{20,100})', form1.IdHTTP1.Response.RawHeaders.GetText ); cook:= RegexProc('([\w]{20,100})',cook); end else begin Form1.Label1.Caption:='Доступ невозможен, т.к. на ваш айпи повешенна капча!' ; end; end; Code: Form1.IdCookieManager1.AddCookie('remixsid='+cook+'; path=/; ','vkontakte.ru'); Form1.IdCookieManager1.AddCookie('remixchk=5; path=/;','vkontakte.ru'); Form1.IdHTTP1.CookieManager:= Form1.IdCookieManager1; Form1.IdHTTP1.Request.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10'; request:=TStringList.Create; Form1.IdHTTP1.AllowCookies := true; //request.Add('midAuth=1'); //request.Add('user='+'jjj'); //request.Add('pswd='+'lll'); Form1.Label1.Caption:='Переходим на vkontakte.ru' ; try bufer:=Form1.IdHTTP1.Get('http://vkontakte.ru/'); except ShowMessage('Ошибка связи!');
Ну ты же хочешь наверно быть программистом или как минимум написать чтобы работало. Вот на это нужен мозг. Пользуйся им и развивай.
я когда то на delphi писал функцию))) может чем поможет)) тока надо исправить процедуру в idcookiamanager.pas PHP: procedure TVKClass.Login; var PageText : TStringList; PostData : TStringList; TempStr : string; I : Integer; begin { Создаем объекты в памяти } HTTP := TidHTTP.Create(nil); Cookie := TidCookieManager.Create(HTTP); PageText := TStringList.Create; PostData := TStringList.Create; { Задаем нужные параметры } HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 MRA 5.6 (build 03278) Firefox/3.5.7 sputnik unknown'; HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; HTTP.Request.AcceptLanguage := 'ru,en-us;q=0.7,en;q=0.3'; HTTP.Request.Connection := 'keep-alive'; HTTP.Request.Referer := 'http://vk.com/login.php'; HTTP.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8'; HTTP.Request.AcceptCharset := 'windows-1251,utf-8;q=0.7,*;q=0.7'; HTTP.CookieManager := Cookie; HTTP.AllowCookies := True; HTTP.HandleRedirects := True; { 1. Запрос на страницу } If FServerType = stVK_COM Then HTTP.Post('http://vk.com/login.php', PostData) else HTTP.Post('http://vkontakte.ru/login.php', PostData); { 2. Формируем запрос } PostData.Add('act=login'); PostData.Add('email=' + femail); PostData.Add('pass=' + fpass); PageText.Text := HTTP.Post('http://login.vk.com/', PostData); If Pos('error', PageText.Text) <> 0 Then begin TriggerLogin('Bad login or password'); end else TriggerLogin('Succes login'); For I := 0 To PageText.Count -1 do begin If Pos('id=' + #39 + 's' + #39, PageText[I]) <> 0 Then begin TempStr := PageText[I]; TempStr := Copy(TempStr, Pos('value=', TempStr) +7, Length(TempStr)); Delete(TempStr, Pos(#39, TempStr), Length(TempStr)); end; end; { 3. Отсылаем ключ на сервер } PostData.Clear; PostData.Add('op=slogin'); PostData.Add('s=' + TempStr); If FServerType = stVK_COM Then PageText.Text := HTTP.Post('http://vk.com/login.php', PostData) else PageText.Text := HTTP.Post('http://vkontakte.ru/login.php', PostData); PageText.Free; PostData.Free; end; ps это код из мокго компонента для вк. нужно исправить код немного...