php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.07.2006, 12:31  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard curl https cookies

Hallo zusammen,

ich versuche mich mit Hilfe von PHP-Curl auf eine HTTPS-Seite einzuloggen. Dabei bekomme ich leider keine Cookies zurück, die nur bei SSL-Verbindungen gesendet werden dürfen. Normale Cookies wie z.B. JSESSIONID kann ich empfangen.
Die Überprüfung des Certificates funktioniert, auch sonst funktioniert der Transfer reibungslos.

Müssen evtt. besondere Optionen für HTTPS-Cookies gesetzt werden o.ä. ??

Wäre für jeden Tipp dankbar, da ich schon seit 3 Tagen an diesem Problem rumbastel.

Schonmal Danke
Ratte
Ratte78 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.07.2006, 17:29  
Gast
 
Beiträge: n/a
Standard Re: curl https cookies

Zitat:
Zitat von Ratte78
ich versuche mich mit Hilfe von PHP-Curl auf eine HTTPS-Seite einzuloggen. Dabei bekomme ich leider keine Cookies zurück, die nur bei SSL-Verbindungen gesendet werden dürfen. Normale Cookies wie z.B. JSESSIONID kann ich empfangen.
Und was sollen wir da nun herauslesen. Wenn Du Deine Beiträge schon im Profi-Forum postest, versuche zumindest genügend Informationen zu liefern.

Wie sieht ein Request aus, der Dir einen Response liefert, der den gewünschten Cookie zu setzen versucht. Wie sieht der von cURL erzeugte aus, inwiefern unterscheiden sie sich?
  Mit Zitat antworten
Alt 27.07.2006, 19:21  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

1. Schritt: Aufruf der Login-Seite. Übertragen wird eine Session-ID JSESSIONID.
PHP-Code:
$userAgent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4";

$ch curl_init("https://app.t-online.de/APPWeb/login/Start.do");

if(!
$ch) {
    die(
sprintf("Fehler[%d]: %s",
        
curl_errno($ch), curl_error($ch)));
}
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_COOKIEJAR"/tmp/cookie.txt"); 
curl_setopt($chCURLOPT_USERAGENT$userAgent);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt ($chCURLOPT_SSL_VERIFYHOST1);

$data curl_exec($ch);

if(!
$data) {
    die(
sprintf("Fehler [%d]: %s",
        
curl_errno($ch), curl_error($ch)));
        
}

curl_close($ch);

echo 
$data
Die JSESSIONID ist jetzt in cookie.txt.

2. Übertragen von Username/Passwort an die in Form-Action angegebene Seite: Die Seite habe ich aus dem ersten Aufruf extrahiert, weil die JSESSIONID an die Seite angehängt ist. (Die selbe wie in cookie.txt)
PHP-Code:
$ch curl_init("https://app.t-online.de$formAction");

if(!
$ch) {
    die(
sprintf("Fehler[%d]: %s",
        
curl_errno($ch), curl_error($ch)));
}

$submit = array("loginName" => "user",
                    
"password" => "pass",
                    
"do_validateLogin" => "Login");

curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$submit);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_COOKIEFILE"/tmp/cookie.txt"); 
curl_setopt($chCURLOPT_COOKIEJAR"/tmp/cookie.txt"); 
curl_setopt($chCURLOPT_USERAGENT$userAgent);
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
curl_setopt($chCURLOPT_SSL_VERIFYHOST1);

$data curl_exec($ch);

if(!
$data) {
    die(
sprintf("Fehler [%d]: %s",
        
curl_errno($ch), curl_error($ch)));
        
}

curl_close($ch);

echo 
$data
Lt. der Ausgabe von curl wird die SessionID gesetzt.
Als Rückgabe sollte hier ein Cookie mit Name "_wl_authcookie_" zurückkommen. Ich habe die Schritte mit Firefox kontrolliert.
Ratte78 ist offline   Mit Zitat antworten
Alt 27.07.2006, 20:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ratte78
Als Rückgabe sollte hier ein Cookie mit Name "_wl_authcookie_" zurückkommen. Ich habe die Schritte mit Firefox kontrolliert.
Dann gefällt dem Server entweder irgendetwas an Deinem Request nicht, weshalb er Dir das Cookie vorenthält, oder eine erfolgreiche Anmeldung wird genauso deppendämlich mit Javascript-Redirect behandelt, wie eine fehlgeschlagene - aber das hast Du bereits ausgeschlossen, nehme ich an...

Im erstem Fall, schau Dir einmal den Request an, den Firefox sendet, und vergleiche ihn mit dem von cURL! Jetzt einfach so anpassen, dass er dem eines "echten" Browsers gleicht, also: "Accept-*:"-Header setzen, den "User-Agent:" und was sonst so dazu gehört.

Vermutlich wird auch Wert darauf gelegt, dass es sich um einen "leibhaftigen" Klienten handelt, sprich automatische Anfragen sollen verhindert werden - das besser erst abklären.
  Mit Zitat antworten
Alt 27.07.2006, 20:19  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Redirect's werden mit Javascript gemacht. Aber bis dahin wurde das Cookie schon gesendet.
Zu dem User-Agent. Hab ich gesetzt. Das Login funktioniert sogar mit Lynx wenn man den Javascript-Redirects manuell folgt.
Werd mich mal durch die RFC wühlen.
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline   Mit Zitat antworten
Alt 27.07.2006, 20:32  
Gast
 
Beiträge: n/a
Standard

Worum genau geht es Dir eigentlich und wieso soll das automatisiert werden?

Ist das, was Du vorhast, so außergewöhnlich, dass es keinen entsprechenden Webservice gibt, oder vielleicht überhaupt nicht erlaubt?
  Mit Zitat antworten
Alt 27.07.2006, 21:07  
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 129
Ratte78
Standard

Das Portal sammelt Daten für gemeldete Aufträge. Schritt 1 ist es Auftragsbezogene Daten während der Erfassung im Firmeneigenem DMS anzuzeigen bzw. auszuwerten. Der nächste Schritt wird sein, Aufträge aus dem DMS ins Portal zu senden.

Einen Webservice gibt es nicht und wird es wohl auch nicht geben. Und erlaubt ist es sicher, denn ob ich mich über den Browser einlogge oder über ein Script o.ä. macht ja diesbzgl. keinen Unterschied.
__________________
Jede Lösung verändert das Problem.
Ratte78 ist offline   Mit Zitat antworten
Alt 27.07.2006, 21:33  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von Ratte78
Einen Webservice gibt es nicht und wird es wohl auch nicht geben. Und erlaubt ist es sicher, denn ob ich mich über den Browser einlogge oder über ein Script o.ä. macht ja diesbzgl. keinen Unterschied.
Rechtlich für viele Unternehmen schon! Also Vorsicht und vorher nachfragen!

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 27.07.2006, 22:23  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
Rechtlich für viele Unternehmen schon!
Unerheblich. Selbst bei spitzfindigster Auslegung finde ich keine gestzliche Verordnung, die festlegt, mit welcher Software ein HTTP Request durchgeführt werden darf und mit welcher nicht. <g>
  Mit Zitat antworten
Alt 27.07.2006, 22:37  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Ratte78
$submit = array("loginName" => "user",
"password" => "pass",
"do_validateLogin" => "Login");

curl_setopt($ch, CURLOPT_POSTFIELDS, $submit);
"CURLOPT_POSTFIELDS: Übergeben wird ein String, der die gesamten Daten enhält, die in einer HTTP POST Aktion gesendet werden sollen."
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Forum Login per curl leb0rtran PHP Tipps 2008 1 19.03.2008 12:47
Brauche bitte Hilfe mit CURL (cookies). Chaox PHP-Fortgeschrittene 2 18.02.2008 08:33
änderung einer konfiguration mit curl emmi PHP Tipps 2008 12 08.02.2008 09:46
Googles Cookies sterben künftig früher PHP Tipps 2007 0 03.08.2007 12:06
Datei Upload mit curl? R.E.M. PHP Tipps 2006 1 18.09.2006 20:44
Login-System ohne Cookies dethlef14 PHP Tipps 2006 7 27.03.2006 22:22
Cookies auslesen HSFighter PHP Tipps 2007 2 19.11.2005 14:56
Sitzungsvariablen, Abfrage-Zeichenketten, Cookies dethlef14 PHP Tipps 2005-2 2 16.08.2005 15:42
anzahl von cookies irgendwann bedenklich?lieber DB-Anfrage? Crypi PHP Tipps 2005-2 9 16.08.2005 12:55
sessions und cookies... PHP Tipps 2005-2 7 31.07.2005 21:17
cookies auslesen PHP Tipps 2005-2 1 09.06.2005 18:11
Zufalls IP per Curl mitgeben Flor1an PHP Tipps 2005 4 04.05.2005 22:38
umschalten des http / https protokolls mit php ohne redirect PHP Tipps 2005 2 12.01.2005 15:29
Cookies auslesen funktioniert nicht... PHP Tipps 2004-2 2 25.12.2004 14:00
[Erledigt] PHP nachträglich mit CURL Support ausstatten PHP-Fortgeschrittene 2 20.12.2004 16:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
curl https, curl https login, curl cookie senden, php cookie senden, curl login https, curl ssl login, php curl https, curl login ssl, https curl, curl jsessionid, curl sessionid, curl http login, php curl cookie, curl cookie mitsenden, https login curl, php curl https login, curl cookie empfangen, http://www.php.de/php-fortgeschrittene/41400-curl-https-cookies.html, support curl https?, php curl cookie senden

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.