Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser: Übermittlung von Session IDs (https://www.delphipraxis.net/98368-twebbrowser-uebermittlung-von-session-ids.html)

Ajin 26. Aug 2007 10:18


TWebbrowser: Übermittlung von Session IDs
 
Schönen Sonntag ihr alle!

Ich möchte eine Anmeldung per Webbrowser automatisch erledigen lassen. Mit folgendem Code kann ich simple Seiten aufrufen und Formulardaten ausfüllen + submitten:

Delphi-Quellcode:
WebBrowser1.Navigate('http://www.meineseite.de/login.php');
F_Logfile.logfile.Lines.add(DateTimeToStr(now) +' Autologin');
webbrowser1.oleobject.document.forms.item(0).elements.item('login').value := 'ichbins';
webbrowser1.oleobject.document.forms.item(0).elements.item('passwd').value := 'geheim';
webbrowser1.oleobject.document.forms.item(0).submit;
Klappt wunderbar!Bis jetzt....

Folgender HTML Code verbirgt sich hinter dem Login:

<form method=POST action="/test.shtml" target=_blank style="display:inline-table;">
<input type=hidden name=cid value="xxxxxx">
<input type=hidden name=id value="x-x-xxxxx">

<table cellspacing=0 cellpadding=0 style="display:inline;">
<tr><td class=info colspan=4></td></tr>
<tr><td class=info colspan=2 align=left><input style="cursor:hand;" type=button class=btinfo value="Schafzucht" onclick="window.open('gacnf.shtml?cid=1028712&id=0-2-65322','gacnf','width=450,height=600,scrollbars=ye s,toolbar=no,status=no,resizable=no')"></td><td class=info colspan=2 align=right><input type=image class=btinfo src="http://meinseite.de/img/login.jpg" name="login"></td></tr>
</table>

Nun zu meinen beiden Fragen:

1) Ich kann diese Form zwar auch submitten, jedoch fehlt die Sessioninformation (fett markierte Zeilen) Wie kann ich diese Session Info mit dem TWebBrowser weitergeben?
2) Die Folgeseite wird in einem neuen Fenster geöffnet - somit verlässt es die TWebbrowser Komponente und gleichzeitig meiner "Kontrolle" Wie kann man dem entgegenwirken?

:stupid:

marabu 26. Aug 2007 11:08

Re: TWebbrowser: Übermittlung von Session IDs
 
Hallo Jaimy,

zu (1): Das kann ich mir nicht vorstellen, dass diese Information verloren geht. Wie hast du das festgestellt?

zu (2): Du kannst im Ereignis OnNewWindow2() den Browser festlegen, in dem die Seite gerendert werden soll.

Auch dir einen Schönen Sonntag

Ajin 26. Aug 2007 15:17

Re: TWebbrowser: Übermittlung von Session IDs
 
Zu 1)

Das Login wird nicht akzeptiert weil die Session angeblich abgelaufen ist. Wenn ich manuell auf den loginbutton drücke ist alles in Ordnung, aber mit:

Delphi-Quellcode:
webbrowser1.oleobject.document.forms.item(1).submit;
klappt das nicht. An was könnte das liegen?

sniper_w 26. Aug 2007 15:45

Re: TWebbrowser: Übermittlung von Session IDs
 
Ich würde es so machen:
1) dem HtmlSubmit-Button eine ID verpassen ( id="einmalig"
2) dieses Button dann so im Code finden und klicken
Delphi-Quellcode:
function GetElementByID(WB: TWebBrowser; elementID: WideString; var element: IHTMLElement): Boolean;
begin
  try
    element := (WB.Document as IHTMLDocument3).getElementById(elementID) as IHTMLElement;
    Result := element <> nil;
  except
    Result := False;
  end;
end;

...

var
  button: IHTMLElement;
begin
  if GetElementByID(myWB, 'einmalig', button) then
  begin
    button.click;
  end;
end;

marabu 26. Aug 2007 15:47

Re: TWebbrowser: Übermittlung von Session IDs
 
Zwei Dinge fallen mir noch auf:

Du wartest nach dem Navigate() nicht ab, bis die Seite geladen ist. Theoretisch kann es passieren, dass du auf das falsche DOM zugreifst.

Und du verwendest zuerst Forms.Item(0) und jetzt Forms.Item(1) um das Submit auszuführen!

Du könntest die Anmeldung auf einem lokalen HTTP-Server mit phpinfo() durchspielen um den Dingen auf die Spur zu kommen.
Oder du verwendest einen lokalen Proxy, den du belauschen kannst.
Vielleicht müssen ja auch nur noch zusätzlich Cookies akzeptiert werden?
Wie hast du die Eigenschaft Silent des WebBrowser Controls eingestellt?

Ajin 27. Aug 2007 08:13

Re: TWebbrowser: Übermittlung von Session IDs
 
Cookies müssen auf der Seite akzeptiert werden, ich dachte das ist "default" Einstellung eines TWebbrowser.
Ich habe

Register as Browser = FALSE
Register as DropTarget = TRUE
Silent = FALSE


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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