Php пример curl: Мультипоточное скачивание из сети на PHP с использованием curl
CURL для обмена данными на PHP, используя HTTP и HTTPS
В практически любом языке программирования, имеются библиотеки для передачи данными между сервером и клиентом. И PHP не стал исключением. PHP поддерживает работу с библиотекой libcurl. Разработчиком и правообладателем данной библиотеки является Daniel Stenberg. Библиотека имеет очень богатые возможности для работы с различными протоколами, с SSL сертификатами, а также обладает поддержкой использования прокси-серверов.
Поскольку мне часто приходиться работать с этой библиотекой. А желания, каждый раз от вызова до вызова дублировать код у меня не было, то мною было принято решение разработать класс, который будет являться оберткой над библиотекой libcurl. В классе реализованы следующие возможности:
Метод является конструктором и вызывается при создании объекта класса. Здесь происходит указание стандартных заголовков запроса.
Данный метод используется для отправки запроса к указанному хосту методом GET. В качестве параметра метод принимает строку содержащую адрес ресурса.
Этот метод следует использовать для отправки запроса к указанному хосту методом POST. Если второй параметр является массивом, то данные будут отправлены в формате multipart/form-data.
Метод используется если необходимо сбросить метод HTTP-запроса в GET. Метод принимает один параметр true или false.
Для установки источника запроса (HTTP заголовок: Referer) следует воспользоваться данным методом, и в качестве параметра, передать строку содержащую источник запроса.
При вызове метода с параметром установленным в значение true, источник запроса (HTTP заголовок: Referer) при переадресациях (HTTP заголовок: Location), будет устанавливаться автоматически.
Метод позволяет установить название user-agent (HTTP заголовок: User-Agent).
Метод добавляет cookies к уже существующей коллекции. Для добавления cookies, следует в качестве параметра передать массив с элементами вида: имя => значение.
Данный метод позволяет произвести удаление cookies по их именам. В качестве параметра выступает массив имен требуемых для удаления cookies.
Метод возвращает все установленные cookies в виде массива.
Метод производит очистку всех cookies.
С помощью данного метода можно произвести установку дополнительных HTTP заголовков. Для этого в качестве параметра необходимо передать массив с элементами вида: имя => значение.
Данный метод позволяет произвести удаление HTTP заголовков по их именам. В качестве параметра необходимо передать массив включающий имена HTTP заголовков необходимых для удаления.
Метод возвращает все установленные HTTP заголовки в виде массива.
Метод очищает все HTTP заголовки.
Данный метод устанавливает кодировку (HTTP заголовок: Accept-Encoding). В качестве параметра метод принимает строку содержащую тип кодировки.
Этот метод устанавливает исходящий сетевой интерфейс для его дальнейшего использования. Имеет смысл в использовании, если сервер имеет в своем распоряжении несколько различных IP адресов. В качестве параметра выступает строка, содержащая IP адрес.
Использование данного метода позволит вывести header-часть полученного ответа в файл. В качестве параметра выступает дескриптор файла.
Для включения или отключения автоматической обработки переадресации (HTTP заголовок: Location), следует передать в качестве параметра 0 или 1 соответственно.
Для того чтобы включить или отключить непосредственный вывод информации сразу после обработки HTTP запроса, в качестве параметра данному методу требуется передать 0 или 1.
Для запрета проверки сертификата удаленного сервера, необходимо в качестве параметра передать 0. Если значение параметра будет нулевым, то возможно появится необходимость вызвать метод set_ssl_verifyhost с параметром равным нулю или единице.
При вызове метода с параметром равным 1, будет происходить проверка на существование имени сертификата, а в случае если параметр будет установлен в значение 2, то будет происходить еще и проверка соответствия имени хоста.
В качестве параметра методу требуется передать строку содержащую имя сертификата PEM.
Данный метод в качестве параметра принимает строку содержащую имя файла с закрытым ключом SSL.
Данному методу в качестве параметра передается строка содержащая имя файла одного или нескольких сертификатов, необходимых для проверки подлинности удаленного сервера.
Метод позволяет установить максимальное время выполнения функций в секундах. В качестве параметра требуется передать ненулевое значение. По умолчанию параметр установлен в 0.
Для установки максимального числа секунд отводимого для ожидания соединения с хостом, в качестве параметра требуется передать ненулевое значение. Требуется установить значение в ноль, если желаете, чтобы ожидание было бесконечным. По умолчанию параметр установлен в 0.
Данный метод имеет смысл использовать, если требуется сохранять полученные cookies в файл. В качестве параметра метод принимает строку содержащую имя файла.
Метод позволяет произвести настройку адресации для использования прокси-сервера. В качестве первого параметра метод принимает строку содержащую имя прокси-сервера и номер порта в формате hostname:port. Если ожидается использование прокси-сервера типа SOCKS, то в качестве значения второго параметра требуется указать “socks5”.
Если прокси-сервер требует авторизации, то указать необходимые для нее данные нужно с помощью данного метода. В качестве параметра метод принимает строку содержащую логин и пароль в формате [username]:[password].
Если имеется необходимость, в получении отчета обо всех действиях библиотеки libcurl, то требуется передать в качестве параметра ненулевое значение.
Данный метод возвращает код последней ошибки библиотеки libcurl.
Метод возвращает значение HTTP заголовка Location.
Полезные примеры использования cURL с PHP
cURL и его расширение для PHP Libcurl, очень полезный инструмент для таких задач, как моделирование веб-браузера, отправка формы или авторизация в веб-сервисах. В этой статье я покажу вам некоторые полезные вещи, которые вы можете делать с помощью PHP и cURL.
Проверяем доступность нужного нам веб-сайта
Хотите знать, доступен ли нужный вам веб-сайт? cURL может вам помочь в этом. Этот скрипт можно использовать для мониторинга своих веб-сайтов.
Не забудьте изменить URL веб-сайта на тот который вы хотите проверить, в строке 3. После этого, просто выполните этот скрипт и это позволит вам узнать о доступности сайта.
<?php
if (isDomainAvailible(‘http://www.webmasters.by’))
{
echo «Сайт доступен!»;
}
else
{
echo «Упс, что то не открывается.»;
}
//возвращает true, если домен доступен, в противном случае false
function isDomainAvailible($domain)
{
//проверяем валидный ли url
if(!filter_var($domain, FILTER_VALIDATE_URL))
{
return false;
}
//инициализация curl
$curlInit = curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
//получаем ответ
$response = curl_exec($curlInit);
curl_close($curlInit);
if ($response) return true;
return false;
}
?>
Замена cURL для file_get_contents ()
Функция file_get_contents() очень полезна, но она, к сожалению, отключена по умолчанию на некоторых хостингах. Используя cURL, мы можем написать аналогичную функцию, которая работает точно так же, как и file_get_contents().
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //чтобы cURL возвращал данные, а не выводил в браузер.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
Получаем последний статус в Твиттере
Используя PHP с cURL можно довольно легко получить статус конкретного пользователя в Твиттере. Данную информацию можно выводить, например, в своем блоге.
function get_status($twitter_id, $hyperlinks = true) {
$c = curl_init();
curl_setopt($c, CURLOPT_URL, «http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1»);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$src = curl_exec($c);
curl_close($c);
preg_match(‘/<text>(.*)<\/text>/’, $src, $m);
$status = htmlentities($m[1]);
if( $hyperlinks ) $status = ereg_replace(«[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]», ‘<a href=»%5C%22%5C%5C0%5C%22″>\\0</a>’, $status);
return($status);
}
Эта функция очень проста в использовании:
echo get_status(‘twitter_id’);
Twitter: испытание дружбы между двумя пользователями
Если вы хотите знать, читает ли конкретный пользователь ваши твиты, то вы можете использовать Twitter API. Этот скрипт будет выводить true, если два пользователя, указанные в строках 18 и 19, подписанны на твиты друг друга. В противном случае вернет false.
function make_request($url) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
/* получаем соответствие */
function get_match($regex,$content) {
preg_match($regex,$content,$matches);
return $matches[1];
}
/* персоны для теста */
$person1 = ‘phpsnippets’;
$person2 = ‘catswhocode’;
/* посылаем запрос в twitter */
$url = ‘https://api.twitter.com/1/friendships/exist’;
$format = ‘xml’;
/* проверяем */
$persons12 = make_request($url.’.’.$format.’?user_a=’.$person1.’&user_b=’.$person2);
$result = get_match(‘/<friends>(.*)<\/friends>/isU’,$persons12);
echo $result; // returns «true» or «false»
Загрузка и сохранение изображений со страницы, используя cURL
Эти функции могут быть очень полезны: передайте скрипту URL веб-страницы, и он сохранит все изображения с этой страницы на сервер.
function getImages($html) {
$matches = array();
$regex = ‘~http://somedomain.com/images/(.*?)\.jpg~i’;
preg_match_all($regex, $html, $matches);
foreach ($matches[1] as $img) {
saveImg($img);
}
}
function saveImg($name) {
$url = ‘http://somedomain.com/images/’.$name.’.jpg’;
$data = get_data($url);
file_put_contents(‘photos/’.$name.’.jpg’, $data);
}
$i = 1;
$l = 101;
while ($i < $l) {
$html = get_data(‘http://somedomain.com/id/’.$i.’/’);
getImages($html);
$i += 1;
}
Конвертация валют с помощью cURL и Google
Конвертирование валют не очень трудно сделать, но так как курс валют колеблется все время, нам, безусловно, нужно использовать такой сервис как у Google, чтобы получить самые последние данные. Функция currency() принимает 3 параметра: первая валюта, вторая валюта и сумма.
function currency($from_Currency,$to_Currency,$amount) {
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$url = «http://www. google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency»;
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , «Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)»);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdata = curl_exec($ch);
curl_close($ch);
$data = explode(‘»‘, $rawdata);
$data = explode(‘ ‘, $data[‘3’]);
$var = $data[‘0’];
return round($var,2);
}
Получаем размер удаленного файла при помощи cURL
Хотите иметь возможность посчитать размер конкретного файла, расположенного на другом сервере? Эта функция может вам помочь. Она принимает 3 параметра: URL файла, и, в случае если файл защищен паролем, имя пользователя и пароль.
function remote_filesize($url, $user = «», $pw = «»){
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
if(!empty($user) && !empty($pw))
{
$headers = array(‘Authorization: Basic ‘ . base64_encode(«$user:$pw»));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = ‘/Content-Length:\s([0-9].+?)\s/’;
$count = preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : «unknown»;
}
Загрузка через FTP при помощи cURL
PHP имеет FTP библиотеку, но вы также можете использовать cURL для загрузки файлов на FTP-сервер. Вот рабочий пример:
// открываем файл
$file = fopen(«/path/to/file», «r»);
// url содержит почти всю необходимую информацию
$url = «ftp://username:<span>Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.</span><script type=’text/javascript’>
document.getElementById(‘cloak675503b561bdee1289eac5cbf493eed3’).innerHTML = »;
var prefix = ‘ma’ + ‘il’ + ‘to’;
var path = ‘hr’ + ‘ef’ + ‘=’;
var addy675503b561bdee1289eac5cbf493eed3 = ‘password’ + ‘@’;
addy675503b561bdee1289eac5cbf493eed3 = addy675503b561bdee1289eac5cbf493eed3 + ‘mydomain’ + ‘.’ + ‘com’;
var addy_text675503b561bdee1289eac5cbf493eed3 = ‘password’ + ‘@’ + ‘mydomain’ + ‘.’ + ‘com’;document. getElementById(‘cloak675503b561bdee1289eac5cbf493eed3’).innerHTML += ‘<a ‘ + path + ‘\» + prefix + ‘:’ + addy675503b561bdee1289eac5cbf493eed3 + ‘\’>’+addy_text675503b561bdee1289eac5cbf493eed3+'<\/a>’;
</script>:21/path/to/new/file»;
$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_INFILESIZE, filesize(«/path/to/file»));
// Устанавливаем режим ASCII (т.е. файл текстовый)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
$output = curl_exec($ch);
curl_close($ch);
Я надеюсь эти примеры будут полезны вам.
Перевод статьи с catswhocode.com
Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом
cURL: Header — Примеры HTTP-Заголовков
С помощью curl
к HTTP-запросам можно добавлять дополнительные заголовки.
HTTP-заголовки (headers) используются для передачи дополнительной информации между сервером и клиентом.
В этой статье я показываю примеры того, как добавить заголовок в curl
, как добавить несколько заголовков и как установить заголовок для авторизации из командной строки в Linux.
Дельный Совет: HTTP-заголовок с User-Agent с помощью cURL! Читать далее →
Добавить Header в cURL
Добавить заголовок X-Forwarded-For
:
$ curl -H "X-Forwarded-For: 192.168.0.1" http://example.com
Установить заголовок Accept: application/xml
и сделать GET
-запрос:
$ curl -H "Accept: application/xml" -X GET www.example.com
Установить заголовок Content-Type: application/json
и отправить данные с помощью POST
-запроса:
$ curl -H "Content-Type: application/json" \ -X POST \ -d '{"key1":"value1","key2":"value2"}' \ http://example. com
Отправить данные из файла data.json
с помощью POST
-запроса:
$ curl -H "Content-Type: application/json" \ -X POST \ -d @data.json \ http://example.com
Пример файла data.json
:
$ cat data.json { "key1":"value1", "key2":"value2" }
Установить Authorization Header в cURL
Базовая аутентификация с помощью Логина и Пароля:
$ curl --user <USER>:<PASSWORD> http://www.example.com
Установить заголовок с токеном для Базовой Аутентификации:
$ curl -H "Authorization: Basic <ACCESS_TOKEN>" http://www.example.com
Чтобы сгенерировать токен для базовой аутентификации, выполните:
$ echo -ne "<USER>:<PASSWORD>" | base64 --wrap 0
Установить заголовок с токеном Barer:
$ curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www. example.com
Установить заголовок с токеном OAuth:
$ curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
Задать логин и пароль для Прокси:
$ curl --proxy-user <PROXY_USER>:<PROXY_PASSWORD> http://www.example.com
Если прокси требует аутентификации методом NTLM, добавьте опцию --proxy-ntlm
, если требуется Digest, добавьте --proxy-digest
.
Добавить заголовок с API-ключем:
$ curl -H "<X-API-KEY>:<API_KEY>" http://www.example.com
Добавить Несколько Заголовков в cURL
Добавить несколько заголовков:
$ curl -H "Accept-Charset: utf-8" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Connection: keep-alive" http://example.com
Как подключить дополнительные библиотеки к php скриптам. PHP CURL – функции и примеры использования
passportbdd.ru
- Adobe Photoshop
- Microsoft Excel
- Microsoft Word
- Windows
- ПК и здоровье
- Работа в интернете
- Работа с ПК
- Расслабон
- Теория, обзоры
- Технологии
…
- Adobe Photoshop
- Microsoft Excel
- Microsoft Word
- Windows
- ПК и здоровье
- Работа в интернете
- Работа с ПК
- Расслабон
- Теория, обзоры
- Технологии
Как подключить дополнительные библиотеки к php скриптам. PHP CURL – функции и примеры использования
Популярные примеры curl — Поддержка KeyCDN
Обновлено 4 октября 2018 г.
Что такое curl?
curl, сокращение от «Client for URLs», представляет собой инструмент командной строки для передачи данных с использованием различных протоколов. Этот инструмент применяется во многих бытовых товарах, таких как планшеты, принтеры, автомобили, маршрутизаторы и т. Д.
Для curl существует огромное количество сценариев использования, таких как:
- FTP-загрузка
- Поддержка прокси
- SSL-соединения
- HTTP post
Этот инструмент также поддерживает использование всех следующих протоколов: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP , SFTP, SMB, SMBS, SMTP, SMTPS, TELNET и TFTP.
В этом руководстве будут представлены несколько популярных примеров curl, а также описание того, что делает каждая команда.
curl examples
Следующие команды могут быть введены непосредственно в ваш терминал для получения ответа.
1. HTTP GET
запрос
Первый пример — это самый простой пример, демонстрирующий простую команду curl, которая имитирует запрос GET
для URL-адреса веб-сайта. Эта команда выведет HTTP-ответ рассматриваемого URL-адреса.
завиток https://www.keycdn.com
2. Возврат только HTTP-заголовков URL-адреса
Параметр -I
используется для указания curl извлекать только заголовки HTTP (метод HEAD,
) определенной страницы или ресурса.
завиток -I https://www.keycdn.com
3. Сохранение результата команды curl
Параметры curl -o
и -O
используются для сохранения результата команды curl. Разница между обоими вариантами заключается в том, что -o
сохранит файл с предопределенным именем файла, которым в данном случае является myfile.css
. С другой стороны, опция -O
сохранит файл под его существующим именем, которым является animate.min.css
. Пример каждого сценария показан ниже.
curl -o myfile.css https://cdn.keycdn.com/css/animate.min.css
curl -O https://cdn.keycdn.com/css/animate.min.css
4. Добавление дополнительного заголовка HTTP-запроса
Эта команда curl может добавлять к вашим запросам дополнительный заголовок HTTP-запроса.Просто используйте опцию -H
и укажите имя и значение заголовка в заключенных кавычках. Если вы не определяете значение для заголовка, то после самого заголовка должна стоять точка с запятой (например, X-Header;
).
curl -H "X-Header: value" https://www. keycdn.com
5. Генерация дополнительной информации
Опция -v
(для подробного описания) может быть определена в команде curl, чтобы она генерировала больше информации во время операции.Например, используя пример дополнительного заголовка, приведенный выше, мы можем добавить параметр -v
, который будет отображать дополнительную информацию о соединении и будет отображать настраиваемый заголовок, а также обычные заголовки.
curl -H "X-Header: value" https://www.keycdn.com -v
6. Возобновление загрузки
Если загрузка для определенного ресурса началась, но была прервана или намеренно остановлена, ее можно легко возобновить с помощью опции -C
.Просто добавьте -C -
к соответствующей команде curl, и ресурс возобновит загрузку с того места, где он остановился.
curl -C - -O https://cdn.keycdn.com/img/cdn-stats.png
7. Сохранение заголовков HTTP
С опцией -D
у вас есть возможность сохранять заголовки HTTP, которые сайт отправляет обратно. Это полезно, например, если вы хотите читать файлы cookie из заголовков с помощью второй команды curl и включения параметра -b
. -
после -D
сообщает curl, что выходной файл — это stdout (файл, в который ядро записывает свой вывод).
curl -D - https://www.keycdn.com/
8. Тестирование времени загрузки ресурса без каких-либо выходных данных
Следующая команда использует несколько параметров curl для достижения желаемого результата. -D -
указывает curl сохранять и отображать заголовки в stdout, а параметр -o
сообщает curl о необходимости загрузки определенного ресурса.Однако, если вы не хотите выводить какие-либо данные, просто добавьте / dev / null
в конец команды. Этот пример может быть полезен, если вы тестируете скорость загрузки ресурса, но не хотите распечатывать или сохранять результат.
curl -D - https://www.keycdn.com/ -o / dev / null
9. Указание максимальной скорости передачи
Вы можете указать максимальную скорость передачи как для выгрузки, так и для выгрузки с помощью параметра --limit-rate
. Скорость измеряется в байтах в секунду, если суффикс, например K
для килобайт, M
для мегабайт и G
гигабайт, не добавлен в конец указанного числа.
curl --limit-rate 200K -O https://cdn.keycdn.com/img/cdn-stats.png
10. Проверка поддержки HTTP / 2
Если у вас последняя версия curl, вы можете использовать параметр --http2
, чтобы проверить, поддерживает ли конкретный URL новый протокол HTTP / 2. Следовательно, если сайт поддерживает HTTP / 2, вы увидите HTTP / 2.0 200
в заголовке вместо HTTP / 1.1 200
.
curl -I --http2 https://cdn.keycdn.com/
11.Получение определенного диапазона байтов
Используйте опцию -r
для извлечения определенного диапазона байтов документа. По сути, это означает получение определенной части файла. Эти команды диапазона байтов можно указать разными способами (например, 0-499
или 500-999
). Прочтите нашу статью, чтобы узнать больше о запросах байтового диапазона.
curl -r 0-20000 -o myfile.png https://cdn.keycdn.com/img/cdn-stats.png
12. Справка по использованию curl
Запустите опцию -h
, чтобы быстро получить список полезных опций командной строки с соответствующими описаниями.
локон -h
примеров curl для имитации методов HTTP
curl также может быть полезен для тестирования методов HTTP. Ниже приведен список методов запроса, которые можно использовать, запустив команду curl.
13. Метод GET
Метод GET
используется для извлечения ресурсов из определенного URL. Простая команда curl https://www.keycdn.com/
будет использовать GET
в качестве метода HTTP по умолчанию, однако его также можно указать с помощью --request GET
или -X GET
.
curl --request GET https://www.keycdn.com/
14. Метод POST
Метод POST
используется для публикации информации на веб-сервере (например, комментария на форуме). Это можно указать с помощью --request POST
или -X POST
.
curl --request POST https://yourwebsite.com/
15. DELETE
метод
DELETE
метод удаляет ресурс с веб-сервера, связанный с определенным URL.Это можно указать с помощью --request DELETE
или -X DELETE
.
curl --request DELETE https://yourwebsite.com/
16. Метод PUT
Метод PUT
создает или заменяет ресурс на основе данных, которые клиент отправляет на веб-сервер. (например, создание новой веб-страницы или обновление существующей). Это можно указать с помощью --request PUT
или -X PUT
.
curl --request PUT https: // yourwebsite.com /
17. Выполнение запросов curl с данными
Вы можете делать запросы, используя определенные методы HTTP, а также отправлять данные с помощью параметра -d
или --data
. В приведенном ниже примере используется запрос POST
, который отправляет данные для входа на страницу входа определенного веб-сайта.
c
15 Практических примеров команд cURL в Linux (примеры загрузки cURL)
cURL — это программный пакет, который состоит из инструмента командной строки и библиотеки для передачи данных с использованием синтаксиса URL.
cURL поддерживает различные протоколы, такие как DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet и TFTP.
В этой статье приведены 15 практических примеров использования cURL.
1. Загрузите отдельный файл
Следующая команда получит содержимое URL-адреса и отобразит его в STDOUT (то есть на вашем терминале).
$ curl http://www.centos.org
Чтобы сохранить вывод в файле, вы перенаправите его, как показано ниже.Это также отобразит некоторую дополнительную статистику загрузок.
$ curl http://www.centos.org> centos-org.html % Всего% Получено% Xferd Средняя скорость Время Время Время Текущее Выгрузка Всего затрачено на оставшуюся скорость 100 27329 0 27329 0 0 104k 0 -: -: - -: -: - -: -: - 167k
2. Сохраните вывод cURL в файл
Мы можем сохранить результат команды curl в файл с помощью параметров -o / -O.
- -o (нижний регистр o) результат будет сохранен в имени файла, указанном в командной строке
- -O (верхний регистр O) будет использовано имя файла в URL-адресе, и оно будет использоваться в качестве имени файла для сохранения результата
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Теперь страница gettext.html будет сохранена в файле с именем mygettext. html. Вы также можете отметить, что при запуске curl с параметром -o он отображает индикатор выполнения загрузки следующим образом.
% Всего% Получено% Xferd Средняя скорость Время Время Время Ток Выгрузка Всего затрачено на оставшуюся скорость 66 1215 тыс. 66 805 тыс. 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215 тыс. 100 1215 тыс. 0 0 39474 0 0:00:31 0:00:31 -: -: - 68987
Когда вы используете curl -O (верхний регистр O), он сохраняет содержимое в файле с именем «gettext.html» на локальном компьютере.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Примечание. Когда curl должен записать данные в терминал, он отключает индикатор выполнения, чтобы избежать путаницы при печати. Мы можем использовать параметры ‘>’ | ’-o’ | ’-O’, чтобы переместить результат в файл.
Подобно cURL, вы также можете использовать wget для загрузки файлов. Обратитесь к примерам wget, чтобы понять, как эффективно использовать wget.
3. Получить несколько файлов одновременно
Мы можем загрузить несколько файлов за один раз, указав URL-адреса в командной строке.
Синтаксис:
$ curl -O URL1 -O URL2
Приведенная ниже команда загрузит и index.html, и gettext.html и сохранит их под тем же именем в текущем каталоге.
$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Обратите внимание, что когда мы загружаем несколько файлов с одного и того же сервера, как показано выше, curl попытается повторно использовать соединение.
4. Следуйте заголовкам местоположения HTTP с параметром -L
По умолчанию CURL не следует за заголовками HTTP Location.Это также называется перенаправлением. Когда запрошенная веб-страница перемещается в другое место, заголовок HTTP Location будет отправлен в качестве ответа, и в нем будет указано, где находится фактическая веб-страница.
Например, когда кто-то набирает google.com в браузере из Индии, он будет автоматически перенаправлен на «google.co.in». Это делается на основе заголовка HTTP Location, как показано ниже.
$ curl http://www.google.com302 перемещено 302 перемещено
Документ перемещен здесь
В приведенных выше выходных данных говорится, что запрошенный документ перемещен на «http://www.google.co.in/».
Мы можем настоять на том, чтобы curl следил за перенаправлением, используя параметр -L, как показано ниже. Теперь он загрузит исходный html-код google.co.in.
$ curl -L http://www.google.com
5. Продолжить / возобновить предыдущую загрузку
Используя параметр curl -C, вы можете продолжить загрузку, которая по какой-то причине уже была остановлена. Это будет полезно, когда вы загружаете большие файлы, а загрузка была прервана.
Если мы скажем «-C -», то curl найдет, откуда начать возобновление загрузки. Мы также можем указать смещение «-C
Начните большую загрузку с помощью curl и нажмите Ctrl-C, чтобы остановить ее в промежутке между загрузками.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20,1%
Примечание: — # используется для отображения индикатора выполнения вместо индикатора выполнения.
Теперь указанная выше загрузка была остановлена на 20,1%. Используя «curl -C -», мы можем продолжить загрузку с того места, где она была остановлена ранее. Сейчас загрузка продолжается с 20,1%.
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21,1%
6. Ограничьте скорость передачи данных
Вы можете ограничить объем передаваемых данных, используя параметр –limit-rate. Вы можете указать максимальную скорость передачи в качестве аргумента.
$ curl - предельная скорость 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Приведенная выше команда ограничивает скорость передачи данных до 1000 байт в секунду. curl может использовать более высокую скорость передачи в течение короткого промежутка времени. Но в среднем это будет около 1000 бит в секунду.
Ниже показан индикатор выполнения указанной выше команды. Вы можете видеть, что текущая скорость близка к 1000 байтам.
% Всего% Получено% Xferd Средняя скорость Время Время Время Ток Выгрузка Всего затрачено на оставшуюся скорость 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
7.Загружать файл, только если он был изменен до / после указанного времени
Мы можем получить файлы, которые были изменены через определенное время, используя параметр -z в curl. Это будет работать как для FTP, так и для HTTP.
$ curl -z 21 декабря-11 http://www.example.com/yy.html
Приведенная выше команда загрузит yy.html, только если он будет изменен позже, чем указанные дата и время
$ curl -z -21-Dec-11 http://www.example.com/yy.html
Приведенная выше команда загрузит yy.html, если он был изменен до указанной даты и времени.
Пожалуйста, обратитесь к «man curl_getdate», чтобы узнать о различном синтаксисе, поддерживаемом для выражения даты
.
8. Пройдите HTTP-аутентификацию в cURL
Иногда веб-сайтам потребуется имя пользователя и пароль для просмотра содержимого (это можно сделать с помощью файла .htaccess). С помощью опции -u мы можем передать эти учетные данные с cURL на веб-сервер, как показано ниже.
$ curl -u имя пользователя: пароль URL
Примечание. По умолчанию curl использует обычную HTTP-аутентификацию.Мы можем указать другой метод аутентификации с помощью –ntlm | –Digest.
9. Загрузите файлы с FTP-сервера
cURL также можно использовать для загрузки файлов с FTP-серверов. Если данный FTP-путь является каталогом, по умолчанию он будет перечислять файлы в определенном каталоге.
$ curl -u ftpuser: ftppass -O ftp: //ftp_server/public_html/xss.php
Приведенная выше команда загрузит файл xss.php с ftp-сервера и сохранит его в локальном каталоге.
$ curl -u ftpuser: ftppass -O ftp: // ftp_server / public_html /
Здесь указанный URL относится к каталогу.Таким образом, cURL отобразит все файлы и каталоги по данному URL-адресу
.
Если вы новичок в FTP / sFTP, обратитесь к руководству по ftp sftp для начинающих.
10. Список / загрузка с использованием диапазонов
cURL поддерживает диапазоны, которые должны быть указаны в URL. Если задан диапазон, будут загружены файлы, соответствующие этому диапазону. Полезно будет загрузить пакеты с зеркал FTP.
$ curl ftp://ftp.uk.debian.org/debian/pool/main/[a-zpting/
Приведенная выше команда выведет список всех пакетов из диапазонов от a до z в терминале.
11. Загрузить файлы на FTP-сервер
Curl также можно использовать для загрузки файлов на FTP-сервер с параметром -T.
$ curl -u ftpuser: ftppass -T myfile.txt ftp://ftp.testserver.com
Приведенная выше команда загрузит файл с именем myfile.txt на FTP-сервер. Вы также можете загрузить несколько файлов одновременно, используя операции диапазона.
$ curl -u ftpuser: ftppass -T "{файл1, файл2}" ftp://ftp.testserver.com
При желании мы можем использовать «.» чтобы получить ввод от STDIN и передать его на удаленный.
$ curl -u ftpuser: ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Приведенная выше команда получит ввод от пользователя из стандартного ввода и сохранит содержимое на ftp-сервере под именем «myfile_1.txt».
Вы можете указать один «-T» для каждого URL, и пара укажет, что куда загружать.
12. Подробнее Infor
CLI Flag | curl_setopt () | Описание |
---|---|---|
—cacert <сертификат CA> | CURLOPT_CAINFO | Имя файла, содержащего один или несколько сертификатов для проверки однорангового узла с помощью |
—capath <каталог сертификатов CA> | CURLOPT_CAPATH | Каталог, содержащий несколько сертификатов ЦС |
-b / — cookie | CURLOPT_COOKIE | Содержимое заголовка «Cookie:» для использования в HTTP-запросе |
-b / — cookie <файл> | CURLOPT_COOKIEFILE | Имя файла, содержащего данные cookie |
-c / — cookie-jar <файл> | CURLOPT_COOKIEJAR | Имя файла для сохранения всех внутренних файлов cookie при закрытии дескриптора |
-X / — запрос <команда> | CURLOPT_CUSTOMREQUEST | Пользовательский метод запроса для использования вместо GET или HEAD при выполнении HTTP-запроса |
—egd-file <файл> | CURLOPT_EGDSOCKET | Имя файла для сокета Entropy Gathering Daemon |
-H / — заголовок «Accept-Encoding: gzip, deflate» | CURLOPT_ENCODING | Содержимое заголовка «Accept-Encoding:».Это позволяет декодировать ответ. |
-P / — ftp-port <адрес> | CURLOPT_FTPPORT | Значение, которое будет использоваться для получения IP-адреса, используемого для инструкции FTP «POST». Команда «POST» сообщает удаленному серверу о необходимости подключения к нашему указанному IP-адресу |
— интерфейс <имя> | CURLOPT_INTERFACE | Имя исходящего сетевого интерфейса для использования.Это может быть имя интерфейса, IP-адрес или имя хоста |
—krb <уровень> | CURLOPT_KRB4LEVEL | Уровень безопасности Kerberos 4. Допустимы любые из следующих значений (в порядке от наименее значимого к наиболее значимому): «ясно», «безопасно», «конфиденциально», «личное» |
-d / — data <данные> | CURLOPT_POSTFIELDS | Полные данные для публикации в операции HTTP POST. Чтобы опубликовать файл, добавьте к имени файла @ и используйте полный путь.Тип файла можно указать явно, указав после имени файла тип в формате ‘; type = mimetype’. Этот параметр может быть передан как строка с URL-кодом, например ‘para1 = val1 & para2 = val2 & …’, или как массив с именем поля в качестве ключа и данными поля в качестве значения. Если значение является массивом, заголовок Content-Type будет установлен на multipart / form-data. Начиная с PHP 5.2.0, значение должно быть массивом, если файлы передаются в эту опцию с префиксом @. |
-x / — прокси | CURLOPT_PROXY | HTTP-прокси для туннелирования запросов через |
-U / — proxy-user <пользователь: пароль> | CURLOPT_PROXYUSERPWD | Имя пользователя и пароль в формате «[имя пользователя]: [пароль]» для использования для подключения к прокси-серверу |
—случайный файл <файл> | CURLOPT_RANDOM_FILE | Имя файла, которое будет использоваться для заполнения генератора случайных чисел для SSL |
-r / — диапазон <диапазон> | CURLOPT_RANGE | Диапазон данных для извлечения в формате «X-Y», где X или Y являются необязательными. |