it-swarm.com.de

file_get_contents () gibt mir 403 verboten

Ich habe einen Partner, der einige Inhalte für mich erstellt hat.
Ich kann mit meinem Browser auf die Seite zugreifen, aber wenn ich file_get_contents verwenden möchte, erhalte ich einen 403 forbidden.

Ich habe stream_context_create ausprobiert, aber das hilft nicht - es könnte daran liegen, dass ich nicht weiß, was da drin gehen soll.

1) Gibt es eine Möglichkeit für mich, die Daten zu kratzen?
2) Wenn nein, und wenn der Partner den Server nicht so konfigurieren darf, dass ich Zugriff habe, was kann ich dann tun?

Der Code, den ich ausprobiert habe:

$opts = array(
  'http'=>array(
    'user_agent' => 'My company name',
    'method'=>"GET",
    'header'=> implode("\r\n", array(
      'Content-type: text/plain;'
    ))
  )
);

$context = stream_context_create($opts);

//Get header content
$_header = file_get_contents($partner_url,false, $context);
18
Steven

Dies ist kein Problem in Ihrem Skript, es ist eine Funktion in der Webserver-Sicherheit Ihres Partners.

Es ist schwer zu sagen, was genau Sie blockiert, höchstwahrscheinlich ist es eine Art Blockade gegen Kratzen. Wenn Ihr Partner Zugriff auf seine Webserver-Einstellungen hat, kann dies die Suche erleichtern.

Sie könnten einen Webbrowser "fälschen", indem Sie die User-Agent-Header so einstellen, dass sie einen Standard-Webbrowser nachahmen.

Ich würde cURL empfehlen, um dies zu tun, und es wird leicht sein, eine gute Dokumentation dafür zu finden.

    // create curl resource
    $ch = curl_init();

    // set url
    curl_setopt($ch, CURLOPT_URL, "example.com");

    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

    // $output contains the output string
    $output = curl_exec($ch);

    // close curl resource to free up system resources
    curl_close($ch); 
29
Cleric

// User Agent zuerst setzen

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); 
16
Abid Hussain

Ich habe zwei Dinge im Kopf: Wenn Sie einen URI mit Sonderzeichen öffnen, wie z. B. Leerzeichen, müssen Sie den URI mit urlencode () codieren, und eine URL kann als Dateiname mit dieser Funktion verwendet werden, wenn die Fopen-Wrapper über diese Funktion verfügen aktiviert wurde.

0