ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1167
1167
EMPFEHLEN
-
Ich brauche Hilfe bei dem Session/Cookie Handling von Curl (bzw. libcurl), hat irgendjemand eine Idee wie man mit Curl sich in Foren einloggt und Cookies benutzt, Sessions benutzt etc. ... ?
Ich hab auch schon den ein oder anderen Code geschrieben, ich bin aber bisher nicht über den Login herausgekommen.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
CURL* curl = curl_easy_init(); if(curl) { //url einlesen curl_easy_setopt(curl,CURLOPT_URL,"http://www.**.**/**?do=login"); // callback einrichten (ist im Moment aber weniger wichtig) curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,handle_data); // Post Daten einlesen curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "*die Daten die ich übertrage*"); //cookies aktivieren curl_easy_setopt(curl,CURLOPT_COOKIEJAR, "blub"); // ausführen CURLcode res = curl_easy_perform(curl); curl_easy_setopt(curl,CURLOPT_URL,"seite die geschützt ist" ); curl_easy_setopt(curl,CURLOPT_AUTOREFERER,1); curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,handle_data); curl_easy_setopt(curl,CURLOPT_COOKIEJAR, "test"); res = curl_easy_perform(curl); curl_easy_cleanup(curl); }
Nun kommt aber immer wenn ich eine Seite aufrufen will, bei der man eingeloggt sein muss:
Ihr Seitenaufruf konnte nicht verarbeitet werden, da Sie sich angemeldet haben, nachdem die vorherige Seite geladen wurde.
Irgendjemand Lösungsvorschläge?
-
Hallo,
so direkt weiß ich leider auch nicht wie CURL das mit den Cookies intern regelt bzw ob diese intern gepuffert werden um sie bei einem erneuten HTTP request automatisch mitzuschicken. Wenn du allerdings das Cookie von der Seite in dein CURL_COOKIEJAR flushst und das Cookie danach wieder explizit via CURLOPT_COOKIEFILE lädst, müsste es eigtl. funktionieren. Hast du denn mal ein wenig Analyse betrieben (bspw. mit wireshark) was passiert wenn du die Anmeldeprozedur manuell und mit curl durchführst?
Zur Thematik mit dem FLUSH:
Code c:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#define URL "http://www.tutorials.de/forum/" #define LOGIN_SUBURL "login.php?do=login" #define COOKIE_FILE "tutorials.de.jar" #define POST_DATA "vb_login_username=XXX&cookieuser=1" \ "&vb_login_password=" \ "&s=&securitytoken=3051246bed61558da4d9c932bff4262b5cde0f62" \ "&do=login&vb_login_md5password=XXX" \ "&vb_login_md5password_utf=XXX" /* erst der Login Versuch: */ curl_easy_setopt(curlh, CURLOPT_URL, URL LOGIN_SUBURL); curl_easy_setopt(curlh, CURLOPT_POSTFIELDS, POST_DATA); curl_easy_setopt(curlh, CURLOPT_WRITEFUNCTION, NULL); curl_easy_setopt(curlh, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_easy_setopt(curlh, CURLOPT_COOKIELIST, "FLUSH"); curl_easy_perform(curlh); /* dann nochmaliges verbinden */ curl_easy_setopt(curlh, CURLOPT_URL, URL); /* hier das Cookie-File laden */ curl_easy_setopt(curlh, CURLOPT_COOKIEFILE, COOKIE_FILE); curl_easy_setopt(curlh, CURLOPT_WRITEFUNCTION, data_handler); curl_easy_perform(curlh);
HTH,
RedWingGeändert von RedWing (21.12.08 um 13:13 Uhr)
"I'm not deaf, I'm ignoring you"
----
-
Ich hab herausgefunden woran es liegt, man muss immer ein Curl* für eine Session benutzen.
Ähnliche Themen
-
cURL-Problem
Von xanthos im Forum Linux & UnixAntworten: 7Letzter Beitrag: 03.07.09, 09:58 -
PHP curl aktivieren
Von visiondpc im Forum Linux & UnixAntworten: 2Letzter Beitrag: 26.09.08, 13:25 -
cURL
Von xanthos im Forum PHPAntworten: 3Letzter Beitrag: 04.09.08, 17:02 -
Curl
Von Furumaru im Forum 3D-StillsAntworten: 14Letzter Beitrag: 06.06.07, 17:44 -
Umsetzung PHP mit CURL > PHP ohne CURL - benötige Hilfe
Von Mofu im Forum PHPAntworten: 3Letzter Beitrag: 27.04.07, 14:01





Zitieren
Login






