CURL получаем / отдаем заголовки

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

parsing

Написал функцию, которая позволяет это делать. Ниже приведен пример с комментариями, базируясь на котором можно собрать код нужной функциональности:

//$url=имя хоста, куда будем заходить

function load_page($url){

$cookies=array();

// имя хоста, откуда якобы пришли, некоторые проверяют

$ref="google.com";

// инициализация cURL

$ch = curl_init($url);

//-- откуда пришли )

curl_setopt($ch, CURLOPT_REFERER, $ref);

// чтобы выводил заголовки

curl_setopt ($ch, CURLOPT_HEADER, 1);

// чтобы не выводил саму страницу (она не нужна)

curl_setopt ($ch, CURLOPT_NOBODY, 1);

// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:

curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');

// если проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:

curl_setopt ($ch, CURLOPT_REFERER, 'http://'.$hostname.'/');

// возвращать результат работы

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

// не проверять SSL сертификат

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

// не проверять Host SSL сертификата

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

// это необходимо, чтобы cURL не высылал заголовок на ожидание

curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));

// выполнить запрос

curl_exec ($ch);

$t=curl_multi_getcontent ($ch);

curl_close ($ch);

// получил массив всех заголовков от сервера
$ret = curl_getinfo($ch);
	if($ret && isset($ret['content_type']) && $ret['content_type']!=null)
	{
	    preg_match("|Content-Type: .*?charset=(.*)\n|imsU", $t, $matches);
	    if(!empty($matches[1]))
	    {
		$ret['charset'] =$matches[1];
	    }
	}
return $ret;

}

Функция вернет массив заголовков

чтото вроде

Array
(
    [url] => http://www.le****rms/
    [content_type] => text/html; charset=windows-1251
    [http_code] => 200
    [header_size] => 189
    [request_size] => 201
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0,123534
    [namelookup_time] => 1,8E-5
    [connect_time] => 0,060704
    [pretransfer_time] => 0,060706
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 0,123504
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [redirect_url] =>
    [charset] => windows-1251
)

если необходимо при получении контента передать какие либо параметры, например куки передаются вот так

curl_setopt($ch, CURLOPT_COOKIE, $value);

$value соответственно где то заранее хранится

ps: помогает очень при ситуации когда глючит функция определения кодировки страницы

  • jQuery ajax в IE7
  • Несколько файлов .wav в один с помощью PHP
  • Убрать IE image toolbar через .htaccess
  • WordPress is_home() работает некорректно
  • Установить elasticsearch На Ubuntu
  • Crop и Resize изображений средствами CodeIgniter
  • создать zip средствами php
  • анимированный GIF средствами php
  • file_get_contents POST отправляем -> получаем
  • CURL справка
  • Базовая структура шаблона (themes) WordPress
  • CURL HTTPS GET POST отправка
  • 4 комментариев на “CURL получаем / отдаем заголовки”

    1. Bioenergetik Kiev:

      Хароший у тебя блог. Добавляю закладку.

    2. saintist:

      отлично ))

    3. Александр:

      Все,конечно, прекрасно ) Но, мне кажется, надо раскрыть тему про куки и пост. А если быть точнее, то просто собрать все статьи в одну красивенькую ))

    4. saintist:

      несомненно, время как смогу выделить обязательно напишу

      ps:но я сделал для себя заметку, и блог веду исключительно для себя, по этой причине все так сжато

    Оставить комментарий