Авторизация Вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vasa2, 14 Nov 2011.

  1. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Я знаю что этого полно в нете, но у меня один вопрос, я прохожу авторизацию за таким кодом:

    PHP:
    function SetCookies(Rawstring): string;
    var 
    PosCookInteger;
    Cookstring;
    begin
    Cook
    := '';
    Cook:= 'Cookie: ';
    PosCook:= Pos('Set-Cookie:'Raw);
    while 
    PosCook<>do
    begin
    Delete
    (Raw1PosCook-1);
    Cook:= Cook Copy(Raw12Pos(';'Raw)-11);
    Delete(Raw1Pos(';'Raw));
    PosCook:= Pos('Set-Cookie:'Raw);
    end;
    Result:= Cook+'remixlang=0;';
    end;

    procedure TForm1.Button1Click(SenderTObject);
    var 
    httpTIdHTTP;
    DataTStringList;
    Cookiesstring;
    begin
    HTTP
    := TIdHTTP.Create(Self);
    HTTP.HandleRedirects:= True;
    HTTP.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1';
    try
    HTTP.Get('http://login.vk.com/?act=login&q=1&al_frame=1&from_host=vkontakte.ru&email='+Edit1.Text+'&pass='+Edit2.Text);
    except
    end
    ;
    Cookies:= SetCookies(HTTP.Response.RawHeaders.Text);
    if 
    Pos('remix'Cookies)<>0 then ShowMessage('Авторизовались');
    HTTP.Free;
    end;

    Чтобы мне оставатся на сайте мне нужно посылать все пост и гет запросы на сайт через тотже idhttp, или это не важно, или это вообще не так делается???
     
  2. PiNgVin07

    PiNgVin07 New Member

    Joined:
    22 Oct 2011
    Messages:
    67
    Likes Received:
    0
    Reputations:
    0

    скачай компонент IdHTTPEx (кукисы сразу встроены) + http.ResponseCode = 302 используй
     
  3. mr_walker

    mr_walker Member

    Joined:
    9 Aug 2009
    Messages:
    41
    Likes Received:
    34
    Reputations:
    2
    Cookies:= SetCookies(HTTP.Response.RawHeaders.Text);
    Если ты записываешь в строку куки то потом используй их...
    HTTP.Request.RawHeades:=Cookies;
    //и делай запросы типа
    http.get('http://vkontakte.ru/id12345');
    //бутут передаватся кукисы которые ты получил..
    //И естественно чтобы очистить куки после завершения нужных действий.
    HTTP.Request.RawHeaders.Clear;

    все просто.. ;)
     
  4. mr_walker

    mr_walker Member

    Joined:
    9 Aug 2009
    Messages:
    41
    Likes Received:
    34
    Reputations:
    2
    Кукисы немогут быть "Встроены"...
    Печеньки можно получить и обработать.
    А вот в компоненте IdHTTPEx не так все просто... сейчас там проблемы с очисткой...
     
  5. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    mr_walker, чтото у меня не выходит, когда перехожу на новею страницу, получаю ответ, там я не вошел.

    Вот код:

    PHP:
    procedure TForm1.Button3Click(SenderTObject);
    var
    //Data: TStringList;
    Cookiesstring;
    begin
    //HTTP:= TIdHTTP.Create(Self);
    IdHTTP2.HandleRedirects:= True;

    IdHTTP2.Request.UserAgent:= 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1';
    try
    IdHTTP2.Get('http://login.vk.com/?act=login&q=1&al_frame=1&from_host=vkontakte.ru&email='+Edit1.Text+'&pass='+Edit2.Text);
    except
    end
    ;
    Cookies:= SetCookies(IdHTTP2.Response.RawHeaders.Text);
    IdHTTP2.Request.RawHeaders.Text:=Cookies;
    if 
    Pos('remix'Cookies)<>0 then ShowMessage('Авторизовались');

    //HTTP.Free;
    end;

    procedure TForm1.Button4Click(SenderTObject);
    var
    vk:WideString ;
    begin
    vk
    :=IdHTTP2.get('http://vkontakte.ru/id12345');
    memo1.Text:= vk;
    end;
     
  6. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    186
    Likes Received:
    45
    Reputations:
    10
    Перед работой:
    PHP:
    IdHTTP2.AllowCookies:=false;
     
  7. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    это нужно вставить куда, перед этим: vk:=IdHTTP2.get('http://vkontakte.ru/id12345'); или гдето в другом месте???
     
  8. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    186
    Likes Received:
    45
    Reputations:
    10
    IdHTTP2.HandleRedirects:= True; - тут
     
  9. Zyon

    Zyon New Member

    Joined:
    24 Feb 2010
    Messages:
    18
    Likes Received:
    4
    Reputations:
    0
    Вообще индейкой не пользуюсь, попробуй синапс, парсишь куки и каждый запрос с этими куками, куда проще?
     
  10. mr_walker

    mr_walker Member

    Joined:
    9 Aug 2009
    Messages:
    41
    Likes Received:
    34
    Reputations:
    2
    вот так сделай...
    Code:
    procedure TForm1.Button3Click(Sender: TObject); 
    var 
    //Data: TStringList; 
    Cookies: string; 
    begin 
    //HTTP:= TIdHTTP.Create(Self); 
    IdHTTP2.HandleRedirects:= True;
    IdHTTP2.AlllowCookies:=false;
    ///bla-bla-bla...
     
  11. mr_walker

    mr_walker Member

    Joined:
    9 Aug 2009
    Messages:
    41
    Likes Received:
    34
    Reputations:
    2
    Ой, ответ уже дан=)))
     
Loading...