# Mit Curl Browser emulieren, POST-Daten senden / auswerten (Firebu), Cookies/SessionID



## lukelukeluke (6. Juli 2010)

Hi,
Ich versuche auf einer Seite mit PHP/Curl einzulogen und dann etwas runterzuladen. Das ist eine Routine die ich sonst dauernd manuell machen müsste...
Habe sowas schonmal erfolgreich gemacht, da war die Seite aber einfacher aufgebaut. Nun habe ich eine Seite mit vielen Auto-Weiterleitungen und Javascripts die ich analysieren muss, was sich recht schwierig herausstellt...
Mein Code ist in etwa:

```
$ch = curl_init();
function curl_page($url,$postfields) {
        global $ch;
        curl_setopt($ch,CURLOPT_URL,$url);
        // Post some data
        if($postfields != "") {
                foreach($postfields as $key=>$value) { $fields_string .=
                $key.'='.$value.'&'; }
                rtrim($fields_string,'&');
                curl_setopt($ch,CURLOPT_POST,count($postfields));
                curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
        }
        // Include Header in Output
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_COOKIESESSION, true);
        curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
        curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
        // Follow 302 msgs
        //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        file_put_contents("response.txt",$response);
        return $response;
}
$response = curl_page("http://domain.com/login.php","<Login-Post-Data>");
$response = curl_page("http://domain.com/main.php");
<Hier response auswerten>
```

Leider hats bis jetzt nicht funktioniert, Login scheint zu gehen, komme dann aber nicht auf die Seite wie wenn ich in Firefox einloge, sondern auf irgendwelche Weiterleitungsseiten mit Javascripts.

Habe mit Firebug versucht den Login-Prozess von Firefox zu analysieren und mit PHP/Curl nachzubauen, ist aber nicht gelungen, weil Firebug irgendwie nicht richtig den Verlauf der POST-Requests speichert, resp. wenn auf eine andere Subdomain weitergeleitet wird kann ich nicht mehr auf die Daten zugreiffen. Wie macht ihr dass zu analysieren, was Firefox genau macht? *Ich muss eigentlich nur wissen, welche Seiten Firefox mit welchen POST-Daten aufruft....*

Ein Punkt der scheitern könnte: Das cookie, welches curl anlegt, sieht etwa so aus:

```
domain.com	FALSE	/	FALSE	1281111881	Account	1234567
domain.com	FALSE	/	FALSE	1281111881	Login	blablabla
```

Wenn ich aber in Firebug schaue wie der Anfrage-Header aussieht, dann sehe ich sowas:

```
Host	domain.com
User-Agent	Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.10
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language	de-de,de;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding	gzip,deflate
Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive	300
Connection	keep-alive
Cookie	__bla1=blablabla; __bla2=bla.bla=(bla)|bla=(direct)|bla=(none); Account=1234567; Login=blablabla; __bla=blam und so weiter
```
Wie ist diese Ausgabe von Firebug zu analysieren, also vorallem der Teil unter "Cookie"?


----------



## CPoly (6. Juli 2010)

Vielleicht kommst du mit HttpFox weiter als mit Firebug
https://addons.mozilla.org/en-US/firefox/addon/6647/


----------



## lukelukeluke (6. Juli 2010)

Absolut Hammer das Plugin, habe das Problem schon gelöst (dachte das schaf ich nie  ).
Habe einfach eine POST-Variable vergessen...
MERCII!


----------

