Инструменты пользователя

Инструменты сайта


curl

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

curl [2020/06/13 13:45] (текущий)
Строка 1: Строка 1:
 +====== Примеры использования cURL ======
  
 +~~Title: cURL тестирование HTTP заголовков~~
 +{{htmlmetatags>
 +metatag-description=()
 +}}
 +
 +cURL это инструмент, позволяющий взаимодействовать с различными серверами и поддерживающий множество протоколов: HTTP, FTP, TELNET и др. Изначально cURL — это служебная программа для командной строки. PHP поддерживает работу с библиотекой cURL.
 +
 +  * [[http://wiki.dieg.info/chrome?s[]=curl#ruchnoe_redaktirovanie_zakladok|Ручное редактирование закладок Google Chrome]] с использованием cURL.
 +  * [[http://docs.guzzlephp.org|Guzzle]] PHP HTTP клиент, обертка над cURL.
 +
 +===== Тестирование HTTP при помощи cURL или rest-client =====
 +cURL позволяет легко выполнять любые HTTP методы для нужного ресурса. Можно передавать любые параметры запросов и заголовков, а так же проверять ответные заголовки и данные. Инструмент коммандной строки «curl», стандартен для большинства *nix систем. Для пользователей Windows подойдёт MinGW/MSYS.
 +
 +Пример использования и базовые опции:
 +
 +<file bash>
 +# curl -X PUT www.example.com/bar/1 -d "some=var" -d "other=var2" -H "Accept: text/json" -I
 +</file>
 +
 +<file bash>
 +-X [METHOD] определяет HTTP метод.
 +-d «name=value» устанавливает имя и значения переменных в POST/PUT.
 +-H [HEADER] устанавливает заголовок.
 +-I отображает заголовки ответа.
 +</file>
 +
 +
 +===== Авторизация POST на PHP с использованием curl =====
 +Пример авторизация [[POST]] на [[PHP]] с использованием curl:
 +
 +Источник: htmlweb.ru
 +<file php>
 +<?
 +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;
 +}
 +?>
 +</file>
 +===== PHP: удаленный размер файла без загрузки файла =====
 +Источник: [[http://qaru.site/questions/98402/php-remote-file-size-without-downloading-file|qaru.sit]]
 +
 +Функция вывод размер удаленного файла, используется библиотека PHP curl и HTTP метод запроса HEAD (параметр CURLOPT_NOBODY).
 +<file php>
 +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";
 +</file>
curl.txt · Последнее изменение: 2020/06/13 13:45 (внешнее изменение)