
24.04.2010, 16:04
|
|
Участник форума
Регистрация: 09.05.2009
Сообщений: 186
Провел на форуме: 1682814
Репутация:
102
|
|
ребят, это снова я
вот функция авторизации, слизана у пухового.
собстно, в чем проблема: в таком виде куки не сохраняются и не передаются, изменить, скажем http.Response.ContentType внутри функции я тоже не могу 
причем, если переменные и функции не делать локальными для потока (ну, тоесть какбэ один поток паралельный главному юзать) - всё отлично работает.
что я снова сделал не так?
Код:
tgo = class(TThread)
private
http:TIdHTTP;
IdCookieManager1:tidcookiemanager;
compressor : tidCompressorZLib;
name, pass,s,s2:string;
post:tstringlist;
function test_log_vk (name, pass : string) : string;
protected
procedure Execute; override;
end;
function tgo.test_log_vk (name, pass : string) : string;
begin
http:=tidhttp.Create;
http.AllowCookies := True;
http.HandleRedirects:=false;
IdCookieManager1 := Tidcookiemanager.Create;
http.CookieManager:=IdCookieManager1;
compressor := tIdCompressorZLib.Create;
http.Compressor := compressor;
http.Request.AcceptEncoding := 'gzip,deflate';
http.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
http.ReadTimeout := 10000;
post:=tstringlist.create;
try
http.get ('http://vk.com');
except end;
post.add ('op=a_login_attempt');
try
c:=http.post ('http://vk.com/login.php', post);
except end;
if ansipos('captcha_sid',c) <>0 then
begin
form1.Memo3.Lines.Add('капча!');
if form1.CheckBox10.Checked=true then
synchronize(get_capt_r)
else
begin
synchronize(get_capt_auto);
end;
form1.Memo3.Lines.Add('обезьяны разгадали капчу: '+cap);
post.add ('captcha_sid='+sid);
post.add ('captcha_key='+cap);
try
http.post ('http://vk.com/login.php', post);
except end;
end;
post.Clear;
post.add ('email=' + name);
post.add ('pass=' + pass);
post.add ('expire=');
post.add ('vk=1');
try
s := http.post ('http://login.vk.com/?act=login', post);
except end;
post.Clear;
s2:=copy(s, pos('value=''',s)+7, 56);
post.Add ('op=slogin');
post.Add ('redirect=1');
post.Add ('expire=0');
post.Add ('to=');
form1.Label2.caption:=s2;
post.Add ('s=' + s2);
try
http.post ('http://vk.com/login.php', post);
http.get (http.Response.Location);
except end;
if length(http.Response.Location) = 0 Then
begin
result:='ok';
end
else
begin
result:='no_ok';
end;
end;
|
|
|