PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit CURL und PHP auf der Commerzbank-Seite einloggen


burpy
11.11.2005, 22:08:44
Hi,

ich versuche mich per CURL und PHP bei der Commerzbank einzuloggen, um die Umsätze meines Kontos auslesen zu können. Als erstes rufe ich die Startseite-Seite auf und lese die sog. wspl-ID aus. Dann sende ich mit CURL das Login-Formular ab, erhalte aber eine andere Fehlermeldung, als wenn ich das gleiche mit dem Browser machen würde. Hier scheitere ich dann.

Die UserID und das Passwort sind natürlich erfunden und funktionieren nicht, da ich ja nicht meine korrekten Daten weitergeben kann. Mit dem Browser kommt aber die Meldung, dass die Zugangsdaten nicht korrekt sind. Mit CURL kommt eine andere nichtsaussagende Fehlermeldung.

Cookies werden keine gesetzt und Javascript braucht die Seite auch nicht. Hat jemand von euch einen Tip für mich?

<?
class commerzbanking {

function seite_einlesen($url, $formvars="", $header=true) {
$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)";
$ch = curl_init($url);
if($this->referer) {
curl_setopt($ch, CURLOPT_REFERER, $this->referer);
$this->referer = "";
}
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_HEADER, $header);
if($formvars) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $formvars);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

function login($userid, $pw) {
$html_code = $this->seite_einlesen("https://portal01.commerzbanking.de/P-Portal/XML/IFILPortal/pgf.html?Tab=3");

preg_match("/\"hidden\" name=\"WSPL_ID\" value=\"(.*?)\">/", $html_code, $output); // in der WSPL_ID steckt verschlüsselt die ZielURL drin
$wspl_id = $output[1];

$formvars["PltLogin_8_Anmeldename"] = $userid;
$formvars["PltLogin_8_Pin"] = $pw;
$formvars["WSPL_ID"] = $wspl_id;
$formvars["PltLogin_8_btnLogin.x"] = "53";
$formvars["PltLogin_8_btnLogin.y"] = "6";
$this->referer = "https://portal01.commerzbanking.de/P-Portal/XML/IFILPortal/pgf.html?Tab=3";
echo $html_code = $this->seite_einlesen("https://portal01.commerzbanking.de/P-Portal/XML/IFILPortal/pgf.html?Tab=1", $formvars);
}

}

$commerzbanking = new commerzbanking();
$commerzbanking->login("1234567891", "12345");
?>

burpy
11.11.2005, 23:51:44
Hab das Problem selbst lösen können. $formvars darf kein Array sein, sondern muss ein Integer sein, mit aneinandergereihten Parametern also so:

$formvars = "PltLogin_8_Anmeldename=".$userid."&PltLogin_8_Pin=".$pw."&WSPL_ID=".$wspl_id."&PltLogin_8_btnLogin.x=53&PltLogin_8_btnLogin.y=2";

MarkusStruebel
26.10.2009, 21:14:45
Hat jemand sowas schon für die Deutsche Bank versucht?

DokuLeseHemmung
26.10.2009, 21:20:00
Im allgemeinen bieten Banken ein API (http://de.wikipedia.org/wiki/Programmierschnittstelle) !

Ein fernsteuern der Website wird sicherlich nicht gern gesehen.

phpcoder
08.12.2009, 10:41:28
Im allgemeinen bieten Banken ein API (http://de.wikipedia.org/wiki/Programmierschnittstelle) !

Ein fernsteuern der Website wird sicherlich nicht gern gesehen.

Dass ist kein direktes fernsteuern, wenn du dich mit CURL, ähnlich wie ein Browser auf der Webseite einlogst und die ausgegebenen Daten verarbeitest. Der Nachteil an dieser Art ist Recht einfach erklärt, man hat immer wieder das Problem, wenn die Formularfelder beziehungsweise die Struktur der Webseite geändert wird, dann funktioniert ein solches Script in den meisten Fällen nicht mehr ordnungsgemäß.

Eine Webseite wird nun mal häufiger geändert als wie eine API Schnittstelle. Daher sollte man sich Gedanken machen ob es nicht sinnvoll ist, eine vorhandene API Schnittstelle zu verwenden.

Grüße Nico

cortex
08.12.2009, 10:53:27
Daher sollte man sich Gedanken machen ob es nicht sinnvoll ist, eine vorhandene API Schnittstelle zu verwenden.

nichts anderes hat doku bereits gesagt.

es ergibt i.d.r. auch keinen sinn, untote (inaktive) threads wieder zum leben zu erwecken - das thema ist erledigt / der op zeigt kein interesse mehr.

[mod: closed]

cx