|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Авторизация с Cookies
Не передаются Cookies.
Использую Indy 10.5.5 (из /tags/Indy 10.5.5 rev 38xx) (Авторизация в контакте) Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, sSkinManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls, ComCtrls, IdCookieManager,IdCookie, XPMan, IdURI; type TEnterForm = class(TForm) IdHTTP1: TIdHTTP; IdCookieManager1: TIdCookieManager; Button1: TButton; Log: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var EnterForm: TEnterForm; login,pass,sid : String; pdata:TStringList; ur:TIdURI; implementation procedure TEnterForm.Button1Click(Sender: TObject); begin login:='***'; pass:='***'; IdHTTP1.AllowCookies:=True; IdHTTP1.HandleRedirects:=True; IdHTTP1.CookieManager:=IdCookieManager1; sid:=IdHTTP1.Get('http://login.vk.com/?act=login&email='+login+'&pass='+pass+'&expire=&vk='); sid:=copy(sid,pos('=''s'' value=''',sid)+17,51); ur:=TIdURI.Create('vkontakte.ru'); ur.Host:='vkontakte.ru'; ur.Path:='/'; IdHTTP1.CookieManager.AddCookie('remixap=1;',ur); IdHTTP1.CookieManager.AddCookie('remixlang=0;',ur); IdHTTP1.CookieManager.AddCookie('remixchk=5;',ur); {По идее эту печеньку должны были установить} IdHTTP1.CookieManager.AddCookie('remixsid='+sid+';',ur); pdata:=TStringList.Create; pdata.Add('s='+sid); pdata.Add('op=slogin'); pdata.Add('redirect=1'); pdata.Add('expire=0'); pdata.Add('to='); IdHTTP1.Post('http://vkontakte.ru/login.php', pdata); feed:=IdHTTP1.Get('http://vkontakte.ru/feed.php'); log.Lines.Add(Feed); // Тут получаем логин-форму for i:=0 to EnterForm.IdHTTP1.CookieManager.CookieCollection.Count-1 do log.Lines.Add(EnterForm.IdHTTP1.CookieManager.CookieCollection.Items[i].CookieText); pdata.Free; end; end. Получаем это: Код:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <script> var t = setTimeout("location.href='http://vkontakte.ru/login.php?op=logout'", 7000); </script> </head> <body> <div> <img src="http://vkontakte.ru/images/progress.gif"> </div> <form id="f" name="f" method="post" action="http://vkontakte.ru/feed.php"> <input type='hidden' name='pda' value='' /> </form> <iframe name="mf" onload="try{if (this.contentWindow.location.href.indexOf('slogin') != -1) {clearTimeout(t); if (this.contentWindow.location.href.indexOf('nonenone') != -1) {location.href='http://vkontakte.ru/login.php?op=logout&to=ZmVlZC5waHA-'; return false;} document.f.submit();}} catch(e) {}" border="0" style="border:0px; background-color:#FFF" src="http://login.vk.com/?vk=" width="1" height="1"></iframe> </body> </html> remixap=1; path=/; domain=.vkontakte.ru remixlang=0; path=/; domain=.vkontakte.ru remixchk=5; path=/; domain=.vkontakte.ru remixsid=4800000000000000000000000000000000вырезанно8b89da79; path=/; expires=Fri, 12-Aug-2011 18:07:55 GMT; domain=.vkontakte.ru Первое что не понятно, почему в домене перед самой строкой появляется точка. И второе, где те Cookies которые дал сервер ? Заранее спасибо за помощь [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) Последний раз редактировалось X-rem, 12.08.2010 в 22:21. |