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:
<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>
Und so sieht mein Code aus:
Delphi-Quellcode:
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;
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.
Laut Firefox LiveHTTPHeaders ergibt ein manueller Login:
Code:
[
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
----------------------------------------------------------
Irgendwelche Hinweise oder Gedankenanstoesse?