Получить исходный код страницы CURL

Тема в разделе "PHP", создана пользователем OnArs, 3 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Здравствуйте!


    Помогите пожалуйста, в CURL'е не рабираюсь, но именно с помощью него нужно получить исходный код заданой страницы.

    Ни каких данных на страницу передавать не нужно, просто получить её исходный код.


    Заранее благодарен! :ay:
     
  2. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    А без всякого курла просто нельзя открыть эту страницу в браузере и через вид--исходный код страницы посмотреть HTML или яваскрипт код...:) или $contents = file_get_contents($url);
    Или вы думаете что через сокеты сможете увидеть код серверного скрипта .то могу вас разочаровать...это невозможно ( или надо ломать сервер) ...тк если скрипт написан на серверном языке типа php.. то он расположен на сервере и формирует код который выводится в браузер..
     
  3. t0os

    t0os

    Регистр.:
    21 окт 2007
    Сообщения:
    284
    Симпатии:
    36
    $url = 'http://google.com';

    $ch = curl_init(); // initialize curl handle
    curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s

    $document = curl_exec($ch);

    echo htmlcpesialchars($document);
     
  4. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Вы такой умный! Но мозгов не хватает понять что через file_get_contents() не все сервера/скрипты/движки дадут посмотреть исходный код и будут ругаться, например:
    "Убедитесь что Ваш браузер поддерживает cookie"

    Примного благодарен! :thenks:
     
  5. chernousov

    chernousov Прохожие

    Простите, что влезаю в вашу высокоинтеллектуальную беседу про мозги и их отсутствие, но топикстартер явно не очень хорошо представляет себе, что такое cookies. Ни file_get_contents(), ни приведённый выше пример с curl вообще к cookies отношения не имеет никакого. И если сайт "заточен" на принудительную проверку cookies, то "Убедитесь что Ваш браузер поддерживает cookie" вы получите в обоих случаях. Узнать, поддерживает ли браузер cookies или нет возможно только при повторном запросе к серверу. Такова суть cookies - при первом запросе ваш браузер их получает от сервера, а при втором - отправляет обратно на сервер. Разумеется, при первом запросе браузер вообще не имеет никаких cookies, ибо он их с сервера ещё ни разу не получал.

    Способ "быстро" узнать, включены ли cookies на стороне клиента - это либо редирект через хедеры (HTTP 301/302), либо редирект через <meta> или jscript, либо фрейм, либо ajax-запрос.
    file_get_contents(), хоть и поддерживает редиректы, но не поддерживает cookies. Приведённый пример с curl не включает в себя ни поддержку редиректов, ни поддержку cookies. Все остальные способы (meta/jscript/frame/ajax) по понятным причинам вообще не обсуждаются.

    Таким образом, мы имеем следующее.
    1) Если это curl, то надо включать поддержку редиректов и cookies (FOLLOWLOCATION/COOKIEFILE/COOKIEJAR).
    2) Как ни банально звучит, но самое надёжное - это действительно посмотреть исходный html через браузер. Будьте уверены, он обработает все скрипты, фреймы и иже с ними.

    Удачи.

    P.S. В догонку - file_get_contents("http://...") будет работать только если в вашем php включено allow_url_fopen.
     
  6. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Чуть позже после написание последнего здесь сообщения столкнулся с этой проблемой, прикрутил, большое спасибо! :ay:

    Хотите мне помоч? Выдерните руками исходный код более тысячи страниц?
     
  7. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Научитесь писать точное ТЗ...
     
  8. klubo4ok

    klubo4ok Писатель

    Регистр.:
    7 авг 2009
    Сообщения:
    4
    Симпатии:
    0
    Из-за чего может не роботать этот код? Может потому, что я использую его на локальном компютере? Также пробывал так:
    PHP:
    <?php
    // инициализация сеанса
    $ch curl_init();

    // установка URL и других необходимых параметров
    curl_setopt($chCURLOPT_URL"http://www.example.com/");
    curl_setopt($chCURLOPT_HEADER0);

    // загрузка страницы и выдача её браузеру
    curl_exec($ch);

    // завершение сеанса и освобождение ресурсов
    curl_close($ch);
    ?> 
    Результат идентичен. Подскажите что не так я делаю.
     
  9. grey109

    grey109

    Регистр.:
    3 апр 2007
    Сообщения:
    176
    Симпатии:
    19
    Curl подключен в php?
     
  10. klubo4ok

    klubo4ok Писатель

    Регистр.:
    7 авг 2009
    Сообщения:
    4
    Симпатии:
    0
    Это в phpinfo()? Какое название строки, ато curl и ему подобного я не нашел.
     
Статус темы:
Закрыта.