Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Login mit TWebBrowser (https://www.delphipraxis.net/38172-login-mit-twebbrowser.html)

Smarty 15. Jan 2005 18:41


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:
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;
Das Ganze funktioniert soweit einigermaßen. Allerdings machen mir 2 Stellen Probleme:
Code:
WebBrowser1.OleObject.document.forms.item(1).elements.item('password').value:='meinPW';    
WebBrowser1.OleObject.document.forms.item(1).elements.item('name').value:='meinName';
Das ist die erste. Egal welche Reiehenfolge, bei diesen Zeilen gibt es eine EAccessViolation beim Versuch aus der Adresse 000000... zu lesen.

Code:
WebBrowser1.Navigate('http://www.die_Seite.de/nochein_Eintrag/do1.php');
Die beiden Links um diesen Teil werden ausgeführt, dieser jedoch nicht, obwohl er korrekt ist. Woran kann das liegen?

toms 15. Jan 2005 18:54

Re: Login mit TWebBrowser
 
Hi,

Probiere das ganze mal ohne Timer zu machen!
Ist sauberer Programmierstil und weniger fehleranfällig.

chkdsk 15. Jan 2005 18:59

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!

Smarty 15. Jan 2005 19:13

Re: Login mit TWebBrowser
 
Zitat:

Zitat von chkdsk
Wozu der ganze Mist?

Erläutere mir bitte genauer was störend ist.

Zitat:

Zitat von chkdsk
Ich weiß nicht, ob der TWebBrowser das modifizieren des HTTP-Headers unterstützt (weil ich ihn nicht benutze),

Geht mir genauso, bis vor 3 Tagen wusste ich nicht mal, dass es ihn gibt. Desweitern habe ich keine Ahnung was du mit
Zitat:

das modifizieren des HTTP-Headers
meinst. Ich habe nunmal nur das einigermaßen sicher drauf was ich in der Schule lernte, sprich kaum etwas das über den Schwierigkeitsgrad eines Taschenrechners geht.

Zitat:

Zitat von chkdsk
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!

Und das ist wieder die Stelle an der ich keine Ahnung habe was du mir damit sagen willst. Sorry.

Zitat:

Zitat von toms
Probiere das ganze mal ohne Timer zu machen!

Wie kann ich das machen? Ich benutze die Timer, damit ich die genaue Uhrzeit für die einzelnen Aktionen einstellen kann. Womit geht das sonst noch?

toms 15. Jan 2005 19:19

Re: Login mit TWebBrowser
 
Noch eine Frage:

Warum führst du 3 Mal hintereinander Navigate aus?
Zitat:

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');
Der Webbrowser wartet nicht, bis ein Navigate Vorgang beendet ist sondern geht
führt alle 3 Navigates direkt nacheinander aus, ohne dass alle Seiten
vollständig geladen werden.

Smarty 15. Jan 2005 19:21

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.

Meflin 15. Jan 2005 19:23

Re: Login mit TWebBrowser
 
Zitat:

Zitat von Smarty
Hmm, wie kann ich das Ganze denn ansonsten im WebBrowser hintereinander laden? Ich kenne nur diese Möglichkeit zum anwählen von Links.

am besten ohne twebbrowser ;)
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!

toms 15. Jan 2005 19:24

Re: Login mit TWebBrowser
 
Zitat:

Zitat von chkdsk
Einfach mal einen Sniffer benutzen, und anschauen, wie das genau funktioniert!

Wo gibt's so ein Sniffer?

Smarty 15. Jan 2005 19:25

Re: Login mit TWebBrowser
 
Zitat:

Zitat von Meflin
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...

Dafür müsste ich wohl PHP können, was leider nicht der Fall ist.

Zitat:

Zitat von Meflin
das kannst du dann mit der idHTTP Komponente von den Indys ansteuern!

Danke, aber was meinst du mit dem eben Gesagten? Ich habe absolut keine Ahnung was das bedeutet.

chkdsk 15. Jan 2005 23:15

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 04:50 Uhr.
Seite 1 von 2  1 2      

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