Блин, ничего не пойму с авторизацией.... Ну не проходит она... Редиректит на страницу с профилем, но вход не осуществлен(т.е на странице с моим профилем: "Чтобы увидеть полную информацию о пользователе, войдите в систему. ") Вроде дельфи уже другую скачал, но все тоже самое Код авторизации в посте №#6737(но в коде я уверен на 99%, т.к неделю назад им авторизовывался)... Проблема с куки насколько я понял, в cookiecollection после авторизации только : Code: l=xxxxxxx; path=/; domain=login.vk.com p=ca505b639ddeba5a27cdf28138eafd6bba05; path=/; domain=login.vk.com Надеюсь на вашу помощь. Помощь могу оплатить(просто срочно нужно)....
fenixelite, попробуй так Code: function GetSubStr(InputStr, BeginStr, EndStr: String): String; var s: String; sp, ep: Integer; begin Result := ''; if pos(BeginStr, InputStr) <> 0 then begin sp := pos(BeginStr, InputStr)+length(BeginStr); s := copy(InputStr,sp,length(InputStr)); ep := pos(EndStr,s)-1; Result := copy(s,1,ep); end; end; procedure TForm1.Button1Click(Sender: TObject); var mp: TIdMultiPartFormDataStream; begin IdHTTP1.Get('http://vkontakte.ru'); IdHTTP1.Request.Referer := 'Referer: http://vkontakte.ru/login.php'; mp := TIdMultiPartFormDataStream.Create; mp.AddFormField('op', 'a_login_attempt'); Memo1.Lines.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', mp); Memo1.Lines.SaveToFile('c:\111.html'); mp.Free; mp := TIdMultiPartFormDataStream.Create; mp.AddFormField('act', 'login'); mp.AddFormField('success_url', ''); mp.AddFormField('fail_url', ''); mp.AddFormField('try_to_login', '1'); mp.AddFormField('to', ''); mp.AddFormField('vk', ''); mp.AddFormField('email', Edit1.Text); mp.AddFormField('pass', Edit2.Text); mp.AddFormField('expire', '1'); Memo1.Lines.Text := IdHTTP1.Post('http://login.vk.com', mp); Memo1.Lines.SaveToFile('c:\222.html'); mp.Free; mp := TIdMultiPartFormDataStream.Create; mp.AddFormField('op', 'slogin'); mp.AddFormField('redirect', '1'); mp.AddFormField('expire', '1'); mp.AddFormField('to', ''); mp.AddFormField('s', GetSubStr(Memo1.Text, 'id=''s'' value=''', '''')); mp.AddFormField('email', '[email protected]'); mp.AddFormField('pass', 'flouer'); mp.AddFormField('expire', '1'); Memo1.Lines.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', mp); Memo1.Lines.SaveToFile('c:\333.html'); mp.Free; if pos('(это Вы)', Memo1.Text) > 0 then MessageDlg('Залогинились.'+#13#10+GetSubStr(Memo1.Text, '<h1> <b>Online</b>', '<span>'), mtInformation, [mbOK], 0) else MessageDlg('Не залогинились!', mtInformation, [mbOK], 0); end;
heretic1990, да тоже самое все... проблема с куками... Remixsid не приходит, а без него не авторизоваться..... Щас попробую indy обновить..
Неужели так трудно додуматься самому нужные кукисы обрабатывать, а не надеяться на кривой менеджер, который подводит на каждом втором сайте?
ололо!1!111!!111 fenixelite, исправь процедуру DoAdd в файле idCookieManager.pas и сам файл перемести в папку lib. Код процедуры: Только в версиях 9.x.x Code: procedure TIdCookieManager.DoAdd(ACookie: TIdCookieRFC2109; ACookieText, AHost: String); Var LDomain: String; begin ACookie.CookieText := ACookieText; if Length(ACookie.Domain) = 0 then LDomain := AHost else LDomain := ACookie.Domain; ACookie.Domain := LDomain; [b]// Если есть точка в начале домена, удаляем ее[/b] If ACookie.Domain[1] = '.' Then ACookie.Domain := Copy(ACookie.Domain, 2, Length(ACookie.Domain)); if ACookie.IsValidCookie(AHost) then begin if DoOnNewCookie(ACookie) then begin FCookieCollection.AddCookie(ACookie); end else begin ACookie.Collection := nil; ACookie.Free; end; end else begin ACookie.Free; end; end;
кстати! уважаемый GhostOnline прав. Ведь выдрать куки из заголовков - это не так уж и сложно. Особенно для вк. Тебе понадобица только remixsid.
надо пример проверки на существование url, в нете есть функции, но что то они не работают, всё время пишет что url существует(( как это реализовать?, желательно на инди.
Вот, завалялась у меня, когда-то в инете нашел, вроде работает: Code: uses wininet; ............................................................. function CheckUrl(url: string): boolean; var hSession, hfile, hRequest: hInternet; dwindex, dwcodelen: dword; dwcode: array [1..20] of char; res: pchar; begin if pos('http://', lowercase(url)) = 0 then url := 'http://'+url; Result := false; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if assigned(hsession) then begin hfile := InternetOpenUrl(hsession, pchar(url), nil, 0, INTERNET_FLAG_RELOAD, 0); dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); res := pchar(@dwcode); result := (res = '200') or (res = '302'); if assigned(hfile) then InternetCloseHandle(hfile); InternetCloseHandle(hsession); end; end;