PDA

Просмотр полной версии : Ошибка безопасности при инвайте в группу. в чем дело?


RedFern.89
01.03.2010, 22:46
накаталд функцию для инвайта в группу по кукам. В ответе от сервера вываливается ошибка безопасности. В чем же может быть дело? оО



function InviteGr(id, gid, sid: string): string;
var
HTTP : TidHTTP;
hash : string;
Temp : string;
Page : TStringList;
Post : TStringList;
Cook : TidCookieManager;
I : Integer;
begin
HTTP := TidHTTP.Create(nil);
Cook := TidCookieManager.Create(nil);
Page := TStringList.Create;

Cook.AddCookie('remixsid=' + sid, 'vkontakte.ru');
Cook.AddCookie('remixchk=5;', 'vkontakte.ru');
Cook.AddCookie('remixclosed_tabs=0;', 'vkontakte.ru');
Cook.AddCookie('remixlang=0;', 'vkontakte.ru');
Cook.AddCookie('remixgroup_closed_tabs=0;', 'vkontakte.ru');
Cook.AddCookie('audio_vol=52', 'vkontakte.ru');

HTTP.Request.Referer := 'http://vkontakte.ru/club' + gid;
HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 MRA 5.6 (build 03278) Firefox/3.6 sputnik 2.1.0.18';
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.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8';
HTTP.Request.Pragma := 'no-cache';
HTTP.Request.CacheControl := 'no-cache';
HTTP.Request.Host := 'vkontakte.ru';
HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
HTTP.Request.CustomHeaders.Add('X-Requested-With: XMLHttpRequest');

HTTP.CookieManager := Cook;
HTTP.AllowCookies := True;
HTTP.HandleRedirects := True;

Page.Text := HTTP.Get('http://vkontakte.ru/club' + gid);

for I := 0 to Page.Count -1 do
begin
If Pos('act=a_invite_friends', Page[i]) <> 0 Then
begin
hash := Page[i];
ShowMessage(hash);
hash := Copy(hash, Pos('decodehash', hash) +12, Length(hash));
Delete(hash, Pos(#39, hash), Length(hash));
end;
end;

Post := TStringList.Create;
Post.Add('friends=' + id);
Post.Add('gid=' + gid);
Post.Add('hash=' + DecodeHash(hash));

Temp := HTTP.Post('http://vkontakte.ru/groups_ajax.php?act=a_invite_friends', Post);

Post.Free;
Page.Free;
Http.Free;
Cook.Free;
end;

GhostOnline
01.03.2010, 22:56
Приведи тело и заголовки ответа

RedFern.89
01.03.2010, 22:59
Заголовки:

HTTP/1.1 200 OK
Server:nginx/0.7.59
Date:Mon, 01 Mar 2010 18:57:44 GMT
Content-Type:text/html; charset=windows-1251
Connection:keep-alive
X-Powered-By:PHP/5.2.6-1+lenny3
Pragma:no-cache
Cache-control:no-store
Vary:Accept-Encoding
Content-Length:32


Тело:

{"error":"Ошибка безопасности."}

GhostOnline
01.03.2010, 23:02
http://yavkontakte.ru/kody-oshibok-vkontakte-otvety-kontakty-pri-zapretax.html тут посмотри, список всех ошибок вконтакте
и ты кстати забыл в try finally функцию обернуть

RedFern.89
01.03.2010, 23:04
так блин. Там все ошибки связанные с blank.php а try...finally пока подождут... так что не так?

GhostOnline
01.03.2010, 23:13
скорее всего что то где то пропустил, или эта ошибка просто не систематизирована в вк
у меня нет функции DecodeHash, проверить у себя не могу

RedFern.89
02.03.2010, 00:27
я сравнивал хэш со страницы и с проги. оба декодированные. совпадают полностью.

RedFern.89
02.03.2010, 21:37
ау!! народ! в чем там дело? о_О приведу код DecodeHash, если вы в нем сомниваетесь)


function DecodeHash(chas: string): string;
var
Decchas : string;
str : string;
I : Integer;
Len : integer;
begin

str := Copy(chas, 6, 12);
Len := Length(str);

For I := 0 To Length(str) -1 do
begin
Decchas := Decchas + str[len];
Inc(len, -1);
end;

str := Copy(chas, 21, Length(chas) -5);
str := str + Copy(chas, 5, 1);

Len := Length(str);

For I := 0 To Length(str) -1 do
begin
Decchas := Decchas + str[len];
Inc(len, -1);
end;

Result := Decchas;
end;

GhostOnline
02.03.2010, 22:05
Ты не так понял.
Я не сомневался в decodehash, я вообще не знаю что это за функция и для чего она нужна, я говорил о том что проверить не могу, потому что у меня ее нет.

Так, а ты на разных группах тестил? На открытых тоже?

Вот например у тебя строку act=a_invite_friends находит даже когда нет ссылки на приглашение друзей, надо дополнительно проверять возможность приглашения в группу.

Так, и еще ты не написал когда именно происходит ошибка, в 1-ом или 2-ом запросе.

RedFern.89
03.03.2010, 07:39
я уже разобралсо) оказывается на приглашения "не друзей" нужны совсем другие параметры))

RedFern.89
03.03.2010, 07:40
а функция DecodeHash нужна для безопасности )))