Хостинг с cURL
13:31, 29.11.2022
Если вы решили автоматизировать передачу данных в Сети с использованием разномастных протоколов, эта статья поможет. Данное программное обеспечение работает с протоколами:
- FTP;
- FTPS;
- HTTP;
- HTTPS;
- TFTP;
- SCP;
- SFTP;
- Telnet;
- DICT;
- LDAP;
- POP3;
- IMAP;
- SMTP.
Работать с cURL можно только через командную строку, так как какой-либо пользовательский интерфейс здесь не предусмотрен. Также возможен вариант использования в качестве дополнительного модуля для какого-либо языка программирования, с которым вы работаете.
Особенности библиотеки cURL
Утилита доступна для всех современных операционных систем, основанных на Unix. Эту команду применяют для получения данных по заданному URL или передачи данных через протоколы, которые мы перечислили выше. Для работы утилиты требуется библиотека API Libcurl – она необходима для обеспечения возможности передачи файлов многочисленным приложениям.
Libcurl является надежной и портативной библиотекой с открытым исходным кодом, которую легко можно интегрировать в любое приложение. Саму команду cURL можно использовать на большинстве дистрибутивов Linux для таких целей:
- Тестирование API.
- Использование внутри shell-скриптов.
- Обеспечение доступа к файлам без браузера.
При этом пакет можно использовать как в коммерческих, так и в некоммерческих целях – исходный код открыт и ПО распространяется свободно.
Установка cURL
Пользователям Windows предварительно требуется установить модуль PHP, так как без него утилита не будет работать. Далее, чтобы установить cURL, необходимо загрузить инсталлятор с официального сайта разработчиков. Просто выберите подходящую версию для вашей OS и затем установите её.
Для любых других операционных систем вы также можете найти инсталлятор в соответствующем списке. Здесь представлены версии для Linux, FreeBSD, DOS, Debian, Ubuntu, Fedora и множества других операционных систем – как бесплатных, так и тех, что нацелены на корпоративное использование.
Как работать с cURL
Существует множество команд, которые понимает эта утилита. Их настолько много, что осветить их все мы не можем чисто физически – для этого потребуется написать подробную многостраничную документацию. Её найти вы можете на профильных форумах или на сайте разработчиков, мы же пройдемся по синтаксису. Он достаточно прост и выглядит следующим образом:
$ curl опции ссылка
Что такое ссылка – и так очевидно, а вот возможных опций бывает достаточно много:
- -# – показать прогресс загрузки;
- -0 – перейти на протокол HTTP 1.0;
- -1 – инициирует использование протокола шифрования tlsv1;
- -2 – переход на sslv2;
- -3 – переход на sslv3;
- -4 – переход на ipv4;
- -6 – переход на ipv6;
- -A – указать свой USER_AGENT;
- -b – сохранение cookie в виде файла;
- -c – передать cookies на сервер из файла;
- -C – возобновить загрузку файла с места разрыва или указанного смещения;
- -m – предельное время ожидания ответа сервера;
- -d – передать данные методом POST;
- -D – сохраняет заголовки, которые вернул сервер, в файл;
- -e – задать поле Referer-uri, указывает с какого сайта пришел пользователь;
- -E – инициирует использование внешнего сертификата SSL;
- -f – запрещает выводить сообщения типа Error;
- -F – передать данные в виде формы;
- -G – активация этой опции инициирует передачу всех данных, указанных в опции -d, методом GET;
- -H – отправить заголовки на server;
- -I – получать HTTP заголовок с игнорированием содержимого страницы;
- -j – прочитать и отправить cookie из файла;
- -J – удаляет заголовок из запроса;
- -L – прием и обработка перенаправлений;
- -s – показать максимальное количество перенаправлений с помощью Location;
- -o – выводить контент страницы в файл;
- -O – сохранять контент в файл с именем страницы или файла на сервере;
- -p – использовать прокси;
- --proto – позволяет задать предпочтительный протокол передачи данных;
- -R – сохранять время последнего изменения удаленного файла;
- -s – минимизировать вывод сведений об ошибках;
- -S – показывать сообщения об ошибках;
- -T – выгрузить файл на сервер;
- -v – максимально подробный вывод;
- -y – минимизировать скорость загрузки;
- -Y – максимизировать скорость загрузки;
- -V – показать версию.
Как видите, синтаксис cURL чувствителен к регистру, так что будьте внимательны.
Примеры использования cURL в PHP
Проще всего с помощью Libcurl реализовать генерацию POST-запросов. Для этого необходимо лишь инициировать сессию cURL, установить необходимые опции, а затем выполнить запрос. Вот простой и наглядный пример:
<?php // Поиск книг на сервере amazon.com $url = "http://www.amazon.com/exec/obidos/search-handle-form/002-5640957-2809605"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); // set url to post to curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable curl_setopt($ch, CURLOPT_TIMEOUT, 3); // times out after 4s curl_setopt($ch, CURLOPT_POST, 1); // set POST method curl_setopt($ch, CURLOPT_POSTFIELDS, "url=index%3Dbooks&field-keywords=PHP+MYSQL"); // add POST fields $result = curl_exec($ch); // run the whole process curl_close($ch); echo $result; ?> <?php // HTTP authentication $url = "http://www.example.com/protected/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword"); $result = curl_exec($ch); curl_close($ch); echo $result; ?> <?PHP // FTP this script to a server $fp = fopen(__FILE__, "r"); $url = "ftp://username:password@mydomain.com:21/path/to/newfile.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_FTPASCII, 1); curl_setopt($ch, CURLOPT_INFILESIZE, filesize(__FILE__)); $result = curl_exec($ch); curl_close($ch); ?>
Чтобы лучше разобраться, как работает cURL, рекомендуем внимательно изучить официальную документацию от разработчиков, или обратиться к опытным системным администраторам за разъяснениями. На этом мы заканчиваем наш материал и благодарим за внимание!