Примеры использования cURL
cURL (расшифровывается как Client URL) это инструмент, позволяющий взаимодействовать с различными серверами и поддерживающий множество протоколов: HTTP, FTP, TELNET и др. Изначально cURL — это служебная программа для командной строки. PHP поддерживает работу с библиотекой cURL.
Утилита cURL установлена по умолчанию во всех современных операционных системах Windows, Mac и Linux.
- Guzzle PHP HTTP клиент, обертка над cURL.
Тестирование HTTP / HTTPS при помощи cURL или rest-client
cURL позволяет легко выполнять любые HTTP методы для нужного ресурса. Можно передавать любые параметры запросов и заголовков, а так же проверять ответные заголовки и данные. Инструмент командной строки «curl», стандартен для большинства *nix систем. Для пользователей Windows подойдёт MinGW/MSYS.
Пример использования и базовые опции:
# curl -X PUT www.example.com/bar/1 -d "some=var" -d "other=var2" -H "Accept: text/json" -I
- -X [METHOD] определяет HTTP метод.
- -d «name=value» устанавливает имя и значения переменных в POST/PUT.
- -H [HEADER] устанавливает заголовок.
- -I, –head отображать только заголовки ответа.
- -k, –insecure Разрешить подключения к сайтам SSL без сертификатов. По умолчанию curl верифицирует все сертификаты и чтобы он не выдавал ошибку о неверных (самоподписанных) сертификатах и установил соединение используйте эту опцию.
- -L, –location Следовать за перенаправлениями (редиректами)
- –max-time (или -m) — это максимальное время в секундах, в течение которого вся операция должна быть завершена или отменена. Параметр –max-time может предотвратить зависание Curl при выполнении пакетных заданий в медленных сетях.
curl --max-time 4 https://wiki.dieg.info
Краткий справочник часто используемых команд curl для протоколов HTTP/HTTPS
- Какие заголовки отдает сервер? Используйте опцию -I, она позволяют получить заголовок без тела документа. Проверим HTTP ответ сайта, используя ключ I:
# curl -I dieg.info HTTP/1.1 301 Moved Permanently Date: Sat, 23 Apr 2022 07:04:04 GMT Server: Apache Location: https://dieg.info/ Cache-Control: max-age=600 Expires: Sat, 23 Apr 2022 07:14:04 GMT Content-Type: text/html; charset=iso-8859-1
- Рекурсивное отслеживание редиректов.
curl -I -L dieg.info
- Замер скорости ответа сайта. Измерение продолжительности соединения FID (First Input Delay — Задержка первого ввода):
curl -w "%{time_total}\n" -o /dev/null -s https://dieg.info 4.561
- Проверить работу gzip сайта при помощи curl, если включено должны увидеть заголовок content-encoding: gzip
curl -H "Accept-Encoding: gzip" -I https://wow2.top ... content-encoding: gzip
- Если у вас несколько ip на сервере и вы хотите сделать запрос с конкретного вашего ip - используйте ключ interface:
curl --interface 193.233.203.51 ipinfo.io/ip
Использование cURL с IPv6
Ключ -6 означает использовать только IPv6, ключ -4 соответственно IPv4. Если libcurl может преобразовывать адрес в несколько версий IP (что происходит, если он поддерживает IPv6), эта опция указывает libcurl разрешать имена только в адреса IPv6.
Запрос к локалхост:
curl -6 "http://[::1]/"
Рекурсивный запрос http заголовков к сайту. Ключ v позволяет в расширенном режиме убедиться, что curl использует имееyно IPv6
curl -v -6 --max-time 7 -IL https://wow2.top * Trying 2001:678:6d4:9203::15:443... * Connected to wow2.top (2001:678:6d4:9203::15) port 443 (#0)
Авторизация POST на PHP с использованием curl
Пример авторизация Метод HTTP POST на PHP с использованием curl:
<? function login($url,$login,$pass){ $ch = curl_init(); if(strtolower((substr($url,0,5))=='https')) { // если соединяемся с https curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } curl_setopt($ch, CURLOPT_URL, $url); // откуда пришли на эту страницу curl_setopt($ch, CURLOPT_REFERER, $url); // cURL будет выводить подробные сообщения о всех производимых действиях curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"login=".$login."&pass=".$pass); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4"); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //сохранять полученные COOKIE в файл curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); $result=curl_exec($ch); // Убеждаемся что произошло перенаправление после авторизации if(strpos($result,"Location: home.php")===false) die('Login incorrect'); curl_close($ch); return $result; } // чтение страницы после авторизации function Read($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // откуда пришли на эту страницу curl_setopt($ch, CURLOPT_REFERER, $url); //запрещаем делать запрос с помощью POST и соответственно разрешаем с помощью GET curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //отсылаем серверу COOKIE полученные от него при авторизации curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4"); $result = curl_exec($ch); curl_close($ch); return $result; } ?>
PHP: удаленный размер файла без загрузки файла
Функция вывод размер удаленного файла, используется библиотека PHP curl и HTTP метод запроса HEAD (параметр CURLOPT_NOBODY).
function getRemoteFilesize($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, TRUE); $data = curl_exec($ch); $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); curl_close($ch); return $size; } $url = 'https://example.com/file.csv'; echo getRemoteFilesize($url); echo "\n";
Читайте также
- Ручное редактирование закладок Google Chrome с использованием cURL.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах