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

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


curl

Различия

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

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

curl [2018/08/11 08:04] (текущий)
Строка 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 · Последние изменения: 2018/08/11 08:04 (внешнее изменение)