Intereting Posts
Система комментариев PHP с ответом 1 уровня. Проблема с отображением запроса Symfony 1.4: Как я могу получить выбранное значение с помощью функции AJAX в зависимости от выбора? Правила цен в каталогах «Применение правил» программно каково использование сегмента $ this-> uri-> (3) в разбиении на страницы кода Как я могу конвертировать две или более тире в синглы и удалять все тире в начале и конце строки? ZF2: как визуализировать вид из другого модуля Междоменный AJAX withCredentials, PHP возвращает длину заголовка заголовка, но без содержимого Vim PHP omni завершение Проверка наличия всех элементов массива пустым PHP Развертывание Doctrine в тестовой среде без консольного доступа Ошибка запуска MySQL: отсутствует элемент root jpg bmp расширение png GET из изображения Для URL PHP mysql Предупреждение: PDOStatement :: execute (): SQLSTATE : недопустимый номер параметра: параметр не определен в … filetext Каков наилучший способ вставки нескольких строк в PHP PDO MYSQL? Установка PHPMailer без Composer

file_get_contents возвращает 404, когда URL-адрес открыт с помощью браузера, и URL-адрес действителен

Я получаю следующую ошибку:

Предупреждение: file_get_contents ( https://www.readability.com/api/content/v1/parser?url=http://www.redmondpie.com/ps1-and-ps2-games-will-be-playable-on- playstation-4-very-soon /? utm_source = dlvr.it & utm_medium = twitter & token = MYAPIKEY ) [function.file-get-contents]: не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.1 404 НЕ НАЙДЕН в /home/DIR/htdocs/readability.php в строке 23

С некоторыми эхо-сигналами я получил URL-адрес, обработанный функцией, и это нормально и действительно, я делаю запрос из своего браузера, и все в порядке.

Дело в том, что я получаю ошибку выше с файлом_get_contents, и я действительно не понимаю, почему.

URL-адрес действителен, и функция НЕ блокируется службой бесплатного хостинга (поэтому мне не нужен завиток).

Если кто-то может заметить ошибку в моем кодексе, я был бы признателен! Благодаря…

Вот мой код:

<?php class jsonRes{ public $url; public $author; public $url; public $image; public $excerpt; } function getReadable($url){ $api_key='MYAPIKEY'; if(isset($url) && !empty($url)){ // I tried changing to http, no 'www' etc... -THE URL IS VALID/The browser opens it normally- $requesturl='https://www.readability.com/api/content/v1/parser?url=' . urlencode($url) . '&token=' . $api_key; $response = file_get_contents($requesturl); // * here the code FAILS! * $g = json_decode($response); $article_link=$g->url; $article_author=''; if($g->author != null){ $article_author=$g->author; } $article_url=$g->url; $article_image=''; if($g->lead_image_url != null){ $article_image=$g->lead_image_url; } $article_excerpt=$g->excerpt; $toJSON=new jsonRes(); $toJSON->url=$article_link; $toJSON->author=$article_author; $toJSON->url=$article_url; $toJSON->image=$article_image; $toJSON->excerpt->$article_excerpt; $retJSONf=json_encode($toJSON); return $retJSONf; } } ?> 

Иногда веб-сайт блокирует сканеры (от удаленных серверов) от доступа к их страницам.

То, что они делают, чтобы обойти это, обманывает заголовки браузеров. Например, притворяться, что это Mozilla Firefox, а не подлый веб-скребок PHP.

Это функция, которая использует библиотеку cURL для этого.

 function get_data($url) { $userAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'; $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); exit; } else{ return $html; } //End of cURL function } 

Затем можно было бы назвать это следующим:

 $response = get_data($requesturl); 

Curl предлагает гораздо больше возможностей для выбора удаленного контента и проверки ошибок, чем file_get_contents. Если вы даже хотите настроить его дальше, ознакомьтесь со списком опций cURL здесь – Сокращенный список параметров cURL