[Delphi] Indy, Cookie и VK

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jakeroid, 4 Jan 2011.

  1. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    Прохожу авторизацию через мобильную версию ВК. То есть m.vkontakte.ru.
    С кодом разобрался, прошел, все замечательно, могу гулять по страницам.
    НО!
    Теперь нужно перейти например на страницу vkontakte.ru/mail.php?. Браузер подсовывает куки, которые получил с мобильной версии.

    Как мне программно подсунуть куки, при переходе на страницу не принадлежащую мобильной версии?
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    ну добавь их http.request.customheaders.add('Cookie: remixsid=234edfgdfg32r234wedfgegh');
    о они будут юзатся на ВСЕХ сайтах :)
     
  3. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    А где можно почитать про работу с CookieManager(Indy)?
    Я уже сделал, как ты мне посоветовал, работает. Но хотелось бы поэлегантнее сделать.
    Что-то вроде скопировать куки хоста m.vkontakte.ru для хоста vkontakte.ru?

    P.S. Возможно я сморозил бред, так как сам пока еще ламер.
     
  4. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    _http://parsing-and-i.blogspot.com/2009/05/idhttppost.html

    Обрати внимание на этот код:

    Code:
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Http  : TidHttp;
      CM    : TidCookieManager;
      Data  : TStringList;
      StrPage, UserID,  UserName  :  String;
      i : integer;
    begin
      try
        Http := TIdHTTP.Create(Self);
        Data := TStringList.Create;
        CM := TidCookieManager.Create(Http);
        Http.AllowCookies := true;
        Http.CookieManager := CM;
        Http.HandleRedirects := true;
    
        Http.Request.Host:='livejournal.com';
        Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
        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.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
        Http.Request.Referer:='http://www.livejournal.com/';
    
        Data.Add('mode=login');
        Data.Add('user=' + Edit1.Text);
        Data.Add('password=' + Edit2.Text);
        StrPage := Http.Post('http://www.livejournal.com/login.bml?ret=1', Data);
      finally
        Data.Free;
        CM.Free;
        Http.Free;
      end;
    
      if Pos('<input class="logoutlj_hidden" id="user" name="user" type="hidden" value="'+Edit1.Text,StrPage) <> 0 then
        ShowMessage('Авторизация прошла успешно')
      else
        ShowMessage('Авторизация провалилась');
    
      Memo1.Lines.Text := StrPage;
    end;
    
    
    Также загляни сюда:

    _http://parsing-and-i.blogspot.com/2009/05/idhttp-delphi.html
     
    1 person likes this.