Использование 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 имеет встроенный для этого функционал, который мы рассмотрим в следующей статье.
Полезные ссылки




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