Antworten auf deine Fragen:
Neues Thema erstellen

Hilfe für Cookies mit CURL gesucht

TTron

Nicht mehr ganz neu hier

Ich suche eine Möglichkeit auf der Seite von unserem Str.Verk.amt die Wunschkennzeichensuche per php/CURL zu benutzen.

Folgendes funktioniert, wenn ich die jsessionid vorher aus dem Firefoxcookie auslese und manuell einsetze.

Code:
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_URL, 'https://apps.kdo.de:443/wuakz/app;jsessionid=DC00A74EA241C1DA1157EC1132ED7654?service=page/Auswahl');
curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieURL);
//curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieURL);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'service=direct/1/Suchen/border.$Form&sp=S0&Form0=$RadioGroup,$RadioGroup$2,$Checkbox,inputBuchstaben,inputZiffern,$FormConditional,$FormConditional$0,$FormConditional$1,$ImageSubmit,$FormConditional$2&$RadioGroup=0&$RadioGroup$2=0&inputBuchstaben=J&inputZiffern=*');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$ergebnis1 = curl_exec($ch);

/*
if($ergebnis1=curl_exec($ch) === false)
{
    echo 'Curl-Fehler: ' . curl_error($ch);
}
else
{
    echo 'Operation ohne Fehler vollständig ausgeführt'."\r\n";
   
}

*/


echo $ergebnis1;

curl_close($ch);

Hier mit (Code im Web gefunden) kann ich scheinbar ein Cookie setzen, was auch funktioniert .. wenn ich aber die jsesionid aus dem darüber gesetzten cookie benutze, dann funktioniert es nicht.

Code:
$ergebnis = get_url("https://apps.kdo.de/wuakz/app?kdnr=4000");

function get_url( $url,  $javascript_loop = 0, $timeout = 5 )
{
    $url = str_replace( "&", "&", urldecode(trim($url)) );

    $cookie = tempnam ("/tmp", "CURLCOOKIE");
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_ENCODING, "" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
    $content = curl_exec( $ch );
    $response = curl_getinfo( $ch );
    curl_close ( $ch );

    if ($response['http_code'] == 301 || $response['http_code'] == 302)
    {
        ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");

        if ( $headers = get_headers($response['url']) )
        {
            foreach( $headers as $value )
            {
                if ( substr( strtolower($value), 0, 9 ) == "location:" )
                    return get_url( trim( substr( $value, 9, strlen($value) ) ) );
            }
        }
    }

    if (    ( preg_match("/>[[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) &&
            $javascript_loop < 5
    )
    {
        return get_url( $value[1], $javascript_loop+1 );
    }
    else
    {
        return array( $content, $response, $cookie );
    }
}

Habt ihr ne Idee dazu?

Gruß
Jens
 

schleppel

Noch nicht viel geschrieben

AW: Hilfe für Cookies mit CURL gesucht

Soweit ich mich erinnere, haben SessionID's aus Sicherheitsgründen nur eine begrenzte "Haltbarkeit".

Gruß
Schleppel
 

Duddle

Posting-Frequenz: 14µHz

AW: Hilfe für Cookies mit CURL gesucht

Okay, habe etwas mit der Seite gekämpft und den wichtigsten Schritt isoliert: die POST-Daten müssen korrekt codiert übergeben werden, alles andere ist quasi egal. Der Code sollte selbsterklärend sein:
PHP:
<?php
$startseite="https://apps.kdo.de/wuakz/app?kdnr=4000";
$cookie = tempnam ("/tmp", "CURLCOOKIE");

//cookie holen, in $cookie speichern
$ch = curl_init ($startseite);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec ($ch);

//POST-Daten setzen
$post[] = urlencode('service').'='.urlencode('direct/1/Suchen/border.$Form');
$post[] = urlencode('sp').'='.urlencode('S0');
$post[] = urlencode('Form0').'='.urlencode('$RadioGroup,$RadioGroup$2,$Checkbox,inputBuchstaben,inputZiffern,$FormConditional,$FormConditional$0,$FormConditional$1,$ImageSubmit,$FormConditional$2');
$post[] = urlencode('$FormConditional').'='.urlencode('F');
$post[] = urlencode('$FormConditional$0').'='.urlencode('T');
$post[] = urlencode('$FormConditional$1').'='.urlencode('T');
$post[] = urlencode('$FormConditional$2').'='.urlencode('F');
$post[] = urlencode('$RadioGroup').'='.urlencode('0');
$post[] = urlencode('$RadioGroup$2').'='.urlencode('0');
$post[] = urlencode('$ImageSubmit.x').'='.urlencode('35');
$post[] = urlencode('$ImageSubmit.y').'='.urlencode('14');
$post[] = urlencode('inputBuchstaben').'='.urlencode('J');
$post[] = urlencode('inputZiffern').'='.urlencode('5555');
$post = implode('&', $post);

//Suchanfrage abschicken
$suchen = "https://apps.kdo.de/wuakz/app";
$ch = curl_init ($suchen);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec ($ch);

//Ergebnis abrufen
$auswahl = "https://apps.kdo.de/wuakz/app?service=page/Auswahl";
$ch = curl_init ($auswahl);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
echo $output;
?>
Den Inhalt von $output musst du jetzt noch ein bisschen massieren, bzw. in ein DOMDocument-Objekt einlesen, um die gewünschten Daten zu extrahieren.


Duddle
 

TTron

Nicht mehr ganz neu hier

AW: Hilfe für Cookies mit CURL gesucht

Hi Duddle,

vielen Dank für deine Antwort.
Ich gehe davon aus, das deine Lösung ungetestet ist ... denn so funktioniert es leider nicht.
Schon allein das Abholen des Cookie schlägt fehl.

Code:
Curl-Fehler: SSL certificate problem, verify that the CA cert is OK.


Mit ein paar Anpassungen habe ich aber jetzt eine Lösung gefunden .. muss nur noch schauen ob das kein Zufall war ;)

Gruß
Jens
 

Duddle

Posting-Frequenz: 14µHz

AW: Hilfe für Cookies mit CURL gesucht

Bei mir (PHP Version 5.2.6-2ubuntu4.6, libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.8) funktioniert es einwandfrei. Hab das auch vorher so per Shell getestet und es erfolgreich in das Script übertragen. Keine Ahnung ob ich da mglw. ein paar andere Standardeinstellungen habe.


Duddle
 

TTron

Nicht mehr ganz neu hier

AW: Hilfe für Cookies mit CURL gesucht

Hmmm .. komisch !?
Also es funktioniert jetzt bei mir auch, aber die Ausgabe bekomme ich nicht sauber formatiert.
Mit DOMDocument-Objekten kann ich leider nichts anfangen .. bin da auch nicht soooo der Profi und schon froh das ich soweit wie jetzt gekommen bin ;)
Ich habe schon trim, str_replace, strip_tags usw. versucht, aber ich habe immer noch Haufenweise Leerzeichen im Ergebnis.
Hast du noch ne Idee wie ich eingermaßen sauber an die ersten 12 gefundenen Kennzeichen komme? Ich hatte eigentlich überlegt diese in ein Array einzulesen ... im Grunde könnte ich auch den kompletten String nach dem einen bestimmten Kennzeichen durchsuchen, aber die ersten 12 in einem Array wären sicher schöner.

Btw .. ich nutze PHP 5.4, evtl. liegts daran.


Gruß
Jens
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Hilfe für Cookies mit CURL gesucht

Genau deshalb parst man XML-/HTML-Dokumente, dann kann man schöne DOM-Funktionen anwenden.
PHP:
$doc = new DOMDocument();
$doc->loadHTML($output);
$xpath = new DOMXpath($doc);
$elemente = $xpath->query('//a[@class="akz"]');

foreach($elemente as $el) {
    echo $el->nodeValue;
}
Rein zufällig ist das schon genug, weil nodeValue alle inneren Tags ignoriert und damit im konkreten Fall die Kennzeichen zusammenschreibt.


Duddle
 

TTron

Nicht mehr ganz neu hier

AW: Hilfe für Cookies mit CURL gesucht

Supi, du bist mein Held :)

Vielen dank für deine Unterstützung!


Gruß
Jens
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.463
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben