Хобрук: Ваш путь к мастерству в программировании

php curl возвращает http_code 404 с содержимым, браузер в порядке

Я хочу удалить эту страницу для получения информации о продукте, используя функции php/curl.

http://www.easymall.my/flower/item-636507.html

Однако curl возвращает http_code = 404, но с браузером все в порядке. Из подобных тем я установил заголовок, куки и реферер в коде, все еще имея http_code 404.

Веб-страница корректно работает в Firefox, но Firebug также показывает 404.

В чем тут может быть проблема???

<?php
 $cookie_file = './cookie.txt';
 $url = "http://www.easymall.my/flower/item-636507.html";

 $ch = curl_init ( $url );
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
 curl_setopt($ch, CURLOPT_MAXREDIRS, 5);   
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

 $User_Agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906    Firefox/3.0';      
 $request_headers = array();
 $request_headers[] = 'User-Agent: '. $User_Agent;
 $request_headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
 curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
 curl_setopt ( $ch, CURLOPT_AUTOREFERER, true );     
 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

 curl_exec ( $ch );
 var_dump ( curl_getinfo ( $ch ) );
 if (curl_errno ( $ch )) {
  print curl_error ( $ch );
  } else {
  curl_close ( $ch );
  }
 ?>


array(22) { ["url"]=> string(46) "http://www.easymall.my/flower/item-636507.html" 
["content_type"]=> string(9) "text/html" ["http_code"]=> int(404) ["header_size"]=> 
int(279) ["request_size"]=> int(232) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) 
["redirect_count"]=> int(0) ["total_time"]=> float(0.188) ["namelookup_time"]=> float(0) ["connect_time"]=> float(0.016) ["pretransfer_time"]=> float(0.016) ["size_upload"]=> float(0) ["size_download"]=> float(17830) ["speed_download"]=> float(94840) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(0) ["starttransfer_time"]=> float(0.11) ["redirect_time"]=> float(0) ["certinfo"]=> array(0) { } ["redirect_url"]=> string(0) "" }

Вывод из Firebug:

GET item-636507.html  404 Not Found   easymall.my   17.4 KB   117.53.152.29:80

Cache-Control   no-store, no-cache, must-revalidate
Connection  Keep-Alive
Content-Type    text/html
Date    Wed, 06 Aug 2014 01:58:12 GMT
Keep-Alive  timeout=5, max=100
Server  Apache/2.4.7 (Unix) OpenSSL/1.0.1e PHP/5.5.6 mod_perl/2.0.8-dev Perl/v5.16.3
Transfer-Encoding   chunked
X-Powered-By    PHP/5.5.6
view source
Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection  keep-alive
Cookie  __utma=86241292.2105711989.1407286316.1407286316.1407290031.2; __utmc=86241292; __utmz=86241292.1407286316.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=86241292.1.10.1407290031
Host    www.easymall.my
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
06.08.2014

  • Видимо неправильно настроен сервер 06.08.2014

Ответы:


1

Проблема не в вашем curl ответе. Это как-то связано с сайтом. Он отправляет заголовок 404, который вы могли бы увидеть, если бы посмотрели на вкладку «Сеть» консоли разработчика.

введите здесь описание изображения


Сайт, который вы изучаете (этот< /sup>) отправляет ваш 404. Они должны решить свою проблему, а не ваш код, вызывающий ее.


Сайт неправильно настроен. Веб-сайт отправляет ошибку 404 либо через .htaccess, либо через http_response_code(404), либо даже через header(). Не зная, как выглядит эта кодовая база, я не могу точно сказать, почему она дает вам 404, но если она вас так сильно беспокоит, вы должны связаться с ними и сообщить им об этом.

06.08.2014
  • Привет, Даррен, из Firebug, он одновременно отправляет заголовок 404 с содержимым. Почему браузеры не показывают ошибку 404 not found? Страница нормально отображается во всех браузерах? 06.08.2014
  • @Pheng-KhaiTan Потому что сервер неправильно настроен. Веб-сайт отправляет 404 либо через .htaccess, либо через http_response_code(404), либо даже через headeer(). Не зная, как выглядит эта кодовая база, я не мог бы точно сказать, почему она дает вам 404 06.08.2014
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

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

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..