![]() |
Login mit TWebBrowser
Hallo
Habe mir ein kleines Programm geschrieben um mich auf einer Seite automatisch einloggen und Aktionen durchführen zu können. Hier mal der Code:
Code:
Das Ganze funktioniert soweit einigermaßen. Allerdings machen mir 2 Stellen Probleme:
rocedure TForm1.Button1Click(Sender: TObject);
begin timer1.enabled:=false; timer2.enabled:=false; timer3.enabled:=true; end; procedure TForm1.Timer3Timer(Sender: TObject); begin WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/'); WebBrowser1.SetFocus; timer1.enabled:=true; timer3.enabled:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin WebBrowser1.OleObject.document.forms.item(1).elements.item('password').value:='meinPW'; WebBrowser1.OleObject.document.forms.item(1).elements.item('name').value:='meinName'; WebBrowser1.OleObject.document.forms.item(1).submit; timer2.enabled:=true; timer1.enabled:=false; end; procedure TForm1.Timer2Timer(Sender: TObject); begin WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/start.php'); WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/do1.php'); WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/outlog'); timer3.enabled:=true; timer2.enabled:=false; end;
Code:
Das ist die erste. Egal welche Reiehenfolge, bei diesen Zeilen gibt es eine EAccessViolation beim Versuch aus der Adresse 000000... zu lesen.
WebBrowser1.OleObject.document.forms.item(1).elements.item('password').value:='meinPW';
WebBrowser1.OleObject.document.forms.item(1).elements.item('name').value:='meinName';
Code:
Die beiden Links um diesen Teil werden ausgeführt, dieser jedoch nicht, obwohl er korrekt ist. Woran kann das liegen?
WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/do1.php');
|
Re: Login mit TWebBrowser
Hi,
Probiere das ganze mal ohne Timer zu machen! Ist sauberer Programmierstil und weniger fehleranfällig. |
Re: Login mit TWebBrowser
Wozu der ganze Mist?
Ich weiß nicht, ob der TWebBrowser das modifizieren des HTTP-Headers unterstützt (weil ich ihn nicht benutze), aber zum einloggen muss einfach nur "Benutzername:Passwort" (ohne Anführungszeichen) mit Base64 encodiert werden, und im entsprechenden Teil des Headers mitgeschickt werden. Einfach mal einen Sniffer benutzen, und anschauen, wie das genau funktioniert! Dann kannst du dir den ganzen Scheiss sparen! |
Re: Login mit TWebBrowser
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Login mit TWebBrowser
Noch eine Frage:
Warum führst du 3 Mal hintereinander Navigate aus? Zitat:
führt alle 3 Navigates direkt nacheinander aus, ohne dass alle Seiten vollständig geladen werden. |
Re: Login mit TWebBrowser
Hmm, wie kann ich das Ganze denn ansonsten im WebBrowser hintereinander laden? Ich kenne nur diese Möglichkeit zum anwählen von Links.
|
Re: Login mit TWebBrowser
Zitat:
am besten wäre es ein eigenes php interface für deine anwendung zu schreiben, dass die gewünschten operationen auf dem server ausführt... das kannst du dann mit der idHTTP Komponente von den Indys ansteuern! |
Re: Login mit TWebBrowser
Zitat:
|
Re: Login mit TWebBrowser
Zitat:
Zitat:
|
Re: Login mit TWebBrowser
Pass auf:
Wenn dein TShitBrowser eine Anfrage erstellt, dann beinhaltet die entweder GET oder POST, den Pfad, die HTTP-Version, etc. Da fügst du einfach folgendes als einzelne Zeile ein: "Authorization: Basic MxIxOxkxOxMxbxJxbxBxZxIxMx==" (Wobei "MxIxOxkxOxMxbxJxbxBxZxIxMx==" der Verschlüsselte String "Username:Passwort" ist.) Bisschen Eigeninitiave, wie du z.B. mit Delphi einen String Base64-verschlüsselst herauszufinden, kann auch nicht schaden. ---> GOOGLE <--- Die oben genannte Möglichkeit funktioniert bei jedem HTTP-Clienten, also auch, falls du mal nen Download-Manager oder so schreiben willst! Es ist die sauberste (und vor allem die wirklich einzig richtige) Methode. Als Sniffer kann ich CommView von TamoSoft empfehlen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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-2025 by Thomas Breitkreuz