![]() |
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:
Klappt wunderbar!Bis jetzt....
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; 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: |
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 |
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:
klappt das nicht. An was könnte das liegen?
webbrowser1.oleobject.document.forms.item(1).submit;
|
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; |
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? |
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 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz