2017-02-13 9 views
2

Ich bin ziemlich neu in cURL und habe es nur für kurze Zeit benutzt. Mein Problem ist, dass ich den Inhalt einer Seite (file_get_content() funktioniert nicht) mit cURL erhalten möchte. Leider hat die betreffende Seite einen Bot-Schutz, dh sie prüft, ob Sie ein Bot sind oder nicht, wenn Sie zum ersten Mal auf der Site erscheinen. Wenn Sie kein Bot sind, werden Sie mit einem absoluten Pfad auf die reale Seite weitergeleitet (schätze ich). Immer, wenn ich diese Seite mit cURL lade, wird der Pfad an meine Serveradresse angehängt. Beispiel: Mein Server hat die Adresse: http://examplepage.com/ cURL hängt den umgeleiteten Pfad an meine URL an. Also würde es so etwas wie sein: http://examplepage.com/absolute/path?with=parameterscurl bringt umgeleitete URL in Adresszeile des Browsers

Auf der ursprünglichen Seite, wo ich versuche, den Inhalt zu bekommen, funktioniert es, weil sie einen Pfad wie das haben, aber ich nicht (Ich möchte etwas HTML-Inhalt ihrer Seite) .

Hier ist mein Code so weit:

<?php 

    /* getting site */ 
    $website = "https://originalsite.com/?some=parameters"; 
    $redirectURL; 

    function curl_download($url) { 
    //initialize curl handler 
    $c = curl_init(); 

    // Include header in result? (0 = yes, 1 = no) 
    curl_setopt($c, CURLOPT_HEADER, 1); 

    //set url to download 
    curl_setopt($c, CURLOPT_URL, $url); 

    // follow redirection 
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); 

    //set referer 
    curl_setopt($c, CURLOPT_REFERER, "https://originalsite.com/"); 

    // User agent 
    curl_setopt($c, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); 

    // Should cURL return or print out the data? (true = return, false = print) 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 

    // Timeout in seconds 
    curl_setopt($c, CURLOPT_TIMEOUT, 10); 

    // Download the given URL, and return output 
    $output = curl_exec($c); 

    // Close the cURL resource, and free system resources 
    curl_close($c); 

    return $output; 
    } 

    $content = curl_download($website); 

    echo $content; 

?> 

so wird es die Seite betreten, wo geprüft wird, ob ich ein Bot bin oder nicht, und nach, dass es leitet mich auf die Website (oder es zumindest, es versucht zu).

Ich habe das Internet und StackOverflow gesucht, aber ich konnte keine Antwort auf mein Problem finden.

+0

Was passiert, wenn Sie '$ output' 'print_r()' 'drücken? – KDOT

+0

Nichts anderes. – CeyKie

+0

Nun, Sie haben entweder einen Fehler gekapselt oder eine Antwort von der $ Ausgabe. Könnten Sie hinzufügen, was der Wert von $ output ist? Die Idee besteht darin, die Anfrage zu debuggen. – KDOT

Antwort

0

Was passiert, ist, dass ein JavaScript-Code eine Umleitung ausgibt, sobald Sie die Seite gerendert haben. Versuchen Sie, JavaScript in Ihrem Browser für einen schnellen Test zu deaktivieren.

+0

Ich denke, das war's. Nach der Deaktivierung von JS wird nur angezeigt, dass es überprüft, ob ich ein Bot bin. Es leitet nicht mehr oder etwas um. – CeyKie

+0

Gibt es einen Weg, das überhaupt zu schaffen? – CeyKie

Verwandte Themen