Использование cURL в Php. Введение

Использование curl в phpЭтим постом я начинаю цикл статей посвященных использованию библиотеки curl в php для автоматизации определенного ряда задач, с которыми сталкивается блоггер в повседневной жизни.

Начнем с рассмотрения ее основных возможностей, а в последующих постах займемся примерами: curl авторизация, curl куки, и т.п. и закончим созданием плагина для WordPress, который будет автоматически, выдавая себя за браузер, добавлять каждый Ваш новый пост в один из сервисов закладок (в какой пока не скажу). Но обо всем по порядку.

Введение
cURL (libcurl) – библиотека для передачи информации между клиентским местом и сервером по протоколам http, https, ftp, ftps, ldap, telnet ( в дальнейшем я буду рассматривать работу с http). По-сути использование curl намного упрощает жизнь программиста, занимающегося парсингом данных с различных сервисов не имеющих api интерфейсов, позволяя реализовывать скрипты, имитирующие например web-браузер или ftp-клиент, при этом избавляя от необходимости ручного формирования пакетов. Разумеется для работы с библиотекой необходимы базовые представления о работе того или иного протокола, т.е. если далее речь зайдет о http, то необходимо примерно знать для чего нужны куки, какими методами передаются данные (post, get), что такое заголовки http пакетов и какого рода информация в них содержится. На эту тему советую ознакомиться с материалом из Википедии о http.

Подключение библиотеки
Для подключения curl в php под win необходимо раскомментировать в php.ini строчку:
;extension=php_curl.dll . Для unix платформ требуется установить пакет libcurl и пересобрать php c опцией –with-curl. На официальном сайте php есть подробный мануал про установке и использованию curl. Определить, включена ли библиотека cURL в php, можно узнать, выполнив phpinfo().

Обзор функций и пример
Работа с cURL в php сводится к вызову четырех основных функций:

  • curl_init – инициализация сеанса
  • curl_exec – выполнение запроса
  • curl_setopt – установка параметров
  • curl_close – закрытие сеанса

Рассмотрим простейший пример:

//инициализируем сеанс
$curl = curl_init();
//указываем адрес страницы
curl_setopt($curl, CURLOPT_URL,'http://test.com/'); 
//представляемся серверу браузером Opera версии 10.00
curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00');
//ответ сервера сохранять в переменную, а не на экран
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//выполняем запрос, результат в переменную $res
$res = curl_exec($curl);
 
if(!$res)
	{
	//для обработки ошибок curl
	$error = curl_error($curl).'('.curl_errno($curl).')';
	echo $error;
	}
else
	{
	echo $res;
	}

Если все настроено правильно, то на экран выведется “морда”, того сайта, который вы указали. Вся страница хранится в переменной $res и с ее контентом мы можем делать все что захотим. Как Вы уже наверно догадались, можно создать скрипт-робот, который будет “передвигаться” от страницы к страницы и получать нужную для нас информацию. Проблемы с которыми он (робот) может столкнуться – необходимость передавать и устанавливать куки и авторизироваться, к счастью curl имеет встроенный для этого функционал, который мы рассмотрим в следующей статье.

Полезные ссылки

Комментарии:

  1. djsmentya

    Наканец то нашел способ ємулирования браузеров)) Спасибо автору за статью…

  2. Александр

    Спасиба, отличный пост вернее цыкл , пойду читать весь до корочки.

  3. Макс

    Не подскажете, как лучше использовать curl в цикле – каждый раз создавать новый объект, или можно использовать существующий?

  4. kail

    Выводит пустую страницу(