Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TidCookieManager & Redirects (https://www.delphipraxis.net/171461-tidcookiemanager-redirects.html)

Ryzinski 7. Nov 2012 14:09


TidCookieManager & Redirects
 
I get cookie from InternetGetCookieEx on DownloadComplete WebBrwoser. When trying to login to hotmail it get's through but then get's redirected. Even though Gmail works. I am trying to figure out a universal solution to transfer Authenication from WebBrowser to IdCookieManager for Web Parsing.

Cookies aswell as redirects are enabled on IdHTPP.

Zitat:

Cookies must be allowed
Your browser is currently set to block cookies. Your browser must allow cookies before you can use Windows Live ID.
Delphi-Quellcode:
 function GetCookie(host: string): string;
    const
      INTERNET_COOKIE_HTTPONLY = 8192;
    var
      hModule: THandle;
      lp: Pointer;
      InternetGetCookieEx: function(lpszUrl, lpszCookieName, lpszCookieData
        : PAnsiChar; var lpdwSize: DWORD; dwFlags: DWORD; lpReserved: pointer)
        : BOOL; stdCall;
      CookieSize: DWORD;
      CookieData: PAnsiChar;
    begin
      LoadLibrary('wininet.dll');
      hModule := GetModuleHandle('wininet.dll');
      if hModule <> 0 then
      begin
        @InternetGetCookieEx := GetProcAddress(hModule, 'InternetGetCookieExA');
        if @InternetGetCookieEx <> nil then
        begin
          CookieSize := 1024;
          Cookiedata := AllocMem(CookieSize);
          if InternetGetCookieEx(PAnsiChar(AnsiString(host)), nil, Cookiedata, CookieSize, INTERNET_COOKIE_HTTPONLY, nil) then
          result:=cookiedata;
          FreeMem(Cookiedata);
        end;
      end;
    end;

procedure EmbeddedWB1DocumentComplete(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
var
  document: IHTMLDocument2;
  cookies: TStringList;
  uri: TIdURI;
begin
  document := EmbeddedWB1.Document as IHTMLDocument2;
  cookies := TStringList.Create;
  try
    cookies.Delimiter:=';';
    //cookies.DelimitedText:=GetCookie(document.url);
    cookies.DelimitedText:=document.cookie;
    uri := TIdURI.Create(document.url);
    try
      IdCookieManager1.AddServerCookies(cookies,uri);
      EmbeddedWB1.LoadFromString(http.Get(document.url));
    finally
      uri.Free;
    end;
  finally
    cookies.Free;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz