![]() |
Login mit IdHTTP
Hi,
ich versuche gerade, mich automatisiert in eine Website einzuloggen. Anfangs habe ich den Login-Prozess einem EmbeddedWB ueberlassen, habe mir die SessionID aus der weitergeleiteten URL rausgepopelt und diese dann bei allen weiteren Anfragen per IdHTTP.Get verwendet. Jetzt will ich aber alles ueber ein IdHTTP erledigen... und hier komme ich nicht weiter. Hier der Code des Login-Formulares:
Code:
Und so sieht mein Code aus:
<form method="POST" action="login.php">
<p align="center">[b]<font size="2" face="Verdana">Loginbereich </font>[/b]</p> <div align="center"> <center> <table style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="3"> <tr> <td width="100"><font size="2" face="Verdana">[b]Benutzername:[/b]</font></td> <td width="100"><input class="inputfeld2" name="user" maxlenght="20" size="20"></td> </tr> <tr> <td width="100"><font size="2" face="Verdana">[b]Passwort:[/b]</font></td> <td width="100"><input class="inputfeld2" type="password" name="pwd" maxlenght="20" size="20"> </td> </tr> <tr> <td colspan="2"> <p align="center"> <input type="submit" class="inputfeld2" value="Login" name="login"></td> </tr> </table> </center> </div> <p align="center">[url="passwort.php"]Benutzerdaten vergessen?[/url]</p> <p align="center">[url="aktivlink.php"]Aktivierungslink erneut zuschicken[/url]</p>
Delphi-Quellcode:
Ich bekomme aber immer nur die Login-Seite zurueckgeliefert. Selbst, wenn ich falsche Login-Daten verwende, kommt keine Anzeige "Benutzername unbekannt", die beim manuellen Einloggen erscheint.
begin
oldct := http.Request.ContentType; http.Request.ContentType := 'application/x-www-form-urlencoded'; try Ergebnis := TStringList.Create; http.HTTPOptions := http.HTTPOptions - [hoKeepOrigProtocol]; Ergebnis.Clear; try try sl := TStringList.Create; try sl.Text := 'user=bla&pwd=fasel'; FResult := HTTP.post ('http://www.irgendwas.de/login.php', sl); finally sl.Free; end; finally try if (HTTP.Connected) then HTTP.DisconnectSocket; except end; end; except end; Ergebnis.Add (AdjustLineBreaks(FResult)); finally http.Request.ContentType := oldct; end; memPage.Lines.Clear; memPage.Lines.Text := Ergebnis.Text; Ergebnis.Free; end; Laut Firefox LiveHTTPHeaders ergibt ein manueller Login:
Code:
Irgendwelche Hinweise oder Gedankenanstoesse?
[url]http://www.irgendwas.de/login.php[/url]
POST /login.php HTTP/1.1 Referer: [url]http://www.irgendwas.de/login.php?ref=[/url] HTTP/1.x 302 Found Location: ./members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f ---------------------------------------------------------- [url]http://www.irgendwas.de/members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f[/url] GET /members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f HTTP/1.1 Referer: [url]http://www.irgendwas.de/login.php?ref=[/url] HTTP/1.x 200 OK ---------------------------------------------------------- |
Re: Login mit IdHTTP
so nicht
Delphi-Quellcode:
ich VERMUTE daran hängt es denn erwartet wird
sl.Text := 'user=bla&pwd=fasel';
Delphi-Quellcode:
sl.Text := 'user=bla'#13#10'pwd=fasel';
|
Re: Login mit IdHTTP
Das wars leider auch nicht. Eben probiert.
|
Re: Login mit IdHTTP
erwartet die Seite cockies? Eventuell könntest du ja die url bekannt geben so das wir auch probieren können denn so ins blaue hinein raten ist recht schwer.
|
Re: Login mit IdHTTP
Cookies werden nicht gesetzt.
Die URL moechte ich nicht nennen, da ich mir hier zum Testen eine Seite mit Login ausgesucht habe, deren AGB ein automatisiertes Einloggen wohl nicht gutheissen. ;) Sehe ich das richtig, dass IdHTTP nach einem Post() automatisch die weitergeleitete Seite mit Get() nachlaedt? Wo finde ich dann die neue URL mit einer moeglichen SessionID und wo befindet sich der Quelltext der weitergeleiteten Seite? |
Re: Login mit IdHTTP
Ich habe es jetzt mal mit einem Login hier in der DP ausprobiert:
Delphi-Quellcode:
Auch hier erhalte ich bei falschen Zugangsdaten noch nicht einmal den Hinweis, dass die Daten falsch sind, sondern einfach nur wieder die Seite login.php...
procedure TForm1.Button1Click(Sender: TObject);
var Ergebnis : TStringList; tmpString: String; oldct: string; FResult: String; ParamData : TStringStream; begin oldct := http.Request.ContentType; http.Request.ContentType := 'application/x-www-form-urlencoded'; try Ergebnis := TStringList.Create; http.HTTPOptions := http.HTTPOptions - [hoKeepOrigProtocol]; Ergebnis.Clear; try try ParamData := TStringStream.Create(''); ParamData.WriteString('username=bla'); ParamData.WriteString('password=fasel'); ParamData.WriteString('redirect='); try FResult := HTTP.post('http://www.delphipraxis.net/login.php', Paramdata); finally ParamData.Free; end; finally try if (HTTP.Connected) then HTTP.DisconnectSocket; except end; end; except end; Ergebnis.Add (AdjustLineBreaks(FResult)); finally http.Request.ContentType := oldct; end; memPage.Lines.Clear; memPage.Lines.Text := Ergebnis.Text; Ergebnis.Free; end; |
Re: Login mit IdHTTP
bei dem dp-login fehlt auf jeden fall schonmal die checkbox und der submit-button.
Lasse ich diese beiden input-felder weg hab ich das gleiche Resultat wie du. Lasse ich diese Angaben nicht weg sieht das resultat wie im Browser aus. Wenn man das gleiche Resultat haben will wie der Browser sollte man auch alle Informationen wie er abschicken und nicht nur die hälfte. |
Re: Login mit IdHTTP
Wie uebergebe ich denn eine Checkbox?
Kannst du mal dein Codesnippet posten? Bei mir klappts mittlerweile manuell, indem ich die sid aus dem Cookie popel und dann die index.html?sid per Get aufrufe. Obwohl HandleRedirects auf true steht, macht IdHTTP das nicht selbst. |
Re: Login mit IdHTTP
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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