cURL und Sessions

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • cURL und Sessions

    Ich beschäftige mich gerade mit cURL und hab mir das Lern-Ziel gesetzt bestimmte Daten von einer Seite auszulesen. Leider schaffe ich es nicht die benötigten Token richtig zu übergeben.

    Mein Lernziel is aktuell auf folgender Seite nur die Veranstaltungen in Berlin anzugeben und auszulesen:
    Freikarten | TwoTickets.de

    Dafür muss Links eine Stadt (search_city) ausgewählt und zusammen mit dem Token übergeben werden. Leider komme ich nicht zum Ziel, wäre super wenn jemand mal über den Quellcode rüberguckt und mir evtl. weiterhilft.

    P.S.
    Ich weiß dass man einfach nur den RSS Feed auslesen muss um die selben Daten zu bekommen, aber dann lernt man ja nichts ^^

    PHP-Code:
        function HomepageLaden($url$postdata)
            {
            
    $agent "My Testbrowser :D";
            
    $header[] = "Accept: text/vnd.wap.wml,*.*";
            
    $ch curl_init($url);

            if (
    $ch)
                {
                
    curl_setopt($ch,    CURLOPT_RETURNTRANSFER1);
                
    curl_setopt($ch,    CURLOPT_USERAGENT$agent);
                
    curl_setopt($ch,    CURLOPT_HTTPHEADER$header);
                
    curl_setopt($ch,    CURLOPT_FOLLOWLOCATION1);

                
    curl_setopt($ch,    CURLOPT_COOKIEJAR"cookie.txt");
                
    curl_setopt($ch,    CURLOPT_COOKIEFILE"cookie.txt");

                if (!empty(
    $postdata))
                    {
                    
    curl_setopt($ch,    CURLOPT_POST1);
                    
    curl_setopt($ch,    CURLOPT_POSTFIELDS$postdata);
                    }

                
    $tmp curl_exec ($ch);
                
    curl_close ($ch);
                }
            return 
    $tmp;
            }

        
    //Get Token & Start Session
        
    $_url "http://www.twotickets.de/soforttickets/";
        
    $_buffer HomepageLaden($_url"");
        
        
    $pattern '/name=\'csrfmiddlewaretoken\' value=\'(.*?)\'/';
        
    preg_match($pattern,$_buffer,$output);
        
        
    //Send Berlin as a City - Server should save it for the ongoing session
        
    $_url "http://www.twotickets.de/staedte-aendern/";
        
    $postdata 'csrfmiddlewaretoken='.$output[1].'&city_radius=100&search_city=Berlin';
        
    $_buffer HomepageLaden($_url"");
        
        
    //Get Page with results for Berlin
        
    $_url "http://www.twotickets.de/soforttickets/";
        
    $_buffer HomepageLaden($_url"");
        
        echo 
    $_buffer
    Danke für eure Hilfe

  • #2
    Gebe doch mal ein Ergebnis nach dem ersten Aufruf der Funktion aus und benutze in den Test zusätzlich CURLOPT_HEADER, true, nur um zu sehen, ob die von Deiner Anfrage eventuell wenig begeistert sind. Hatte jetzt nur mal mit einem einen kleinen Testbot angefragt, dabei die Antwort erhalten:

    Bitte aktiviere Cookies, um diese Seite nutzen zu können.
    Nun habe ich noch keine Cookie-Optionen unter cURL getestet, doch unter welchen Namen und werden die abgelegt? Doch unter dem Namen von Deiner Domain auf Deinem Computer und für den entfernten Server nicht erreichbar oder habe ich da gerade einen Denkfehler?

    Edit: Wenn Du schon ein Code-Listing von einer anderen Webseite verwendest, dabei nicht einmal den Namen der Funktion änderst, dann könntest Du auch die Quelle mit angeben:

    Andere Webseiten mit PHP auslesen

    Mit den Cookie-Optionen verstehe ich nicht so richtig, denke daran wird es wohl scheitern.
    Zuletzt geändert von Melewo; 18.04.2013, 21:08.

    Kommentar

    Lädt...
    X