Intereting Posts
Альтернатива Md5 в PHP? определить, установлен ли флажок php $ _GET Php – Bulk post 500 Внутренняя ошибка сервера Apache cakephp3 связывает одну таблицу с несколькими таблицами в зависимости от типа Является ли Symfony лучшим выбором, чем Zend для магазина веб-разработки (10+), потому что это полноценная структура стека? Запуск на стороне сервера js из php через exec () Каскадный выбор htmlentities () против htmlspecialchars () Как я могу остановить буферизацию вывода PHP из сообщений об ошибках? создать таблицу с комбинированным ключом с cassandra-cli Путь текущего скрипта PHP относительно корня документа Как вы можете избежать вставки нулевой записи в базу данных с помощью ассоциации «один ко многим» с использованием доктрины? Удалить имя подпапки с сайта WordPress с помощью htaccess PHP-доступ к внешнему $ var изнутри функции класса Загрузка файлов не работает для больших файлов

file_get_contents () дать мне 403 Запрещено

У меня есть партнер, который создал некоторый контент для меня.
Я могу получить доступ к странице с моим браузером, но при попытке пользователя file_get_contents я получаю 403 forbidden на 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); 

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

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

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

Я бы рекомендовал 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); 

// сначала установить User Agent

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

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