файл получить содержимое() дайте мне 403 запрещенных


У меня есть партнер, который создал для меня некоторый контент.
Я могу получить доступ к странице с помощью своего браузера, но при попытке пользователя file_get_contents я получаю 403 forbidden.

Я пробовал использовать stream_context_create, но это не помогает - возможно, потому, что я не знаю, что там должно быть.

1) Есть ли у меня какой-нибудь способ очистить данные?
2) Если нет, и если партнеру не разрешено настраивать сервер для предоставления мне доступа, что я могу сделать тогда?

Код, который я пробовал использование:

$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);
Author: Steven, 2012-07-27

3 answers

Это не проблема в вашем скрипте, это функция безопасности веб-сервера ваших партнеров.

Трудно точно сказать, что вас блокирует, скорее всего, это какой-то блок против выскабливания. Если у вашего партнера есть доступ к настройке его веб-серверов, это может помочь точно определить.

Что вы могли бы сделать, так это "подделать веб-браузер", установив заголовки агента пользователя так, чтобы он имитировал стандартный веб-браузер.

Я бы рекомендовал cURL для этого, и будет легко найти хорошее документация для этого.

    // 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
Author: Cleric, 2015-01-12 06:34:42

//сначала установите Агент пользователя

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)'); 
 15
Author: Abid Hussain, 2012-07-28 21:55:35

У меня на уме две вещи: если вы открываете URI со специальными символами, такими как пробелы, вам нужно закодировать URI с помощью urlencode(), и URL-адрес можно использовать в качестве имени файла с помощью этой функции, если были включены оболочки fopen.

 0
Author: ARIF MAHMUD RANA, 2012-07-27 02:50:08