Php

Php пример curl: Мультипоточное скачивание из сети на PHP с использованием curl

Содержание

CURL для обмена данными на PHP, используя HTTP и HTTPS

В практически любом языке программирования, имеются библиотеки для передачи данными между сервером и клиентом. И PHP не стал исключением. PHP поддерживает работу с библиотекой libcurl. Разработчиком и правообладателем данной библиотеки является Daniel Stenberg. Библиотека имеет очень богатые возможности для работы с различными протоколами, с SSL сертификатами, а также обладает поддержкой использования прокси-серверов.

Поскольку мне часто приходиться работать с этой библиотекой. А желания, каждый раз от вызова до вызова дублировать код у меня не было, то мною было принято решение разработать класс, который будет являться оберткой над библиотекой libcurl. В классе реализованы следующие возможности:

  • CURL __construct ()

    Метод является конструктором и вызывается при создании объекта класса. Здесь происходит указание стандартных заголовков запроса.

  • string get (string $url)

    Данный метод используется для отправки запроса к указанному хосту методом GET. В качестве параметра метод принимает строку содержащую адрес ресурса.

  • string post (string $url, string $postparams)

    Этот метод следует использовать для отправки запроса к указанному хосту методом POST. Если второй параметр является массивом, то данные будут отправлены в формате multipart/form-data.

  • void set_httpget (bool $httpget)

    Метод используется если необходимо сбросить метод HTTP-запроса в GET. Метод принимает один параметр true или false.

  • void set_referer (string $referer)

    Для установки источника запроса (HTTP заголовок: Referer) следует воспользоваться данным методом, и в качестве параметра, передать строку содержащую источник запроса.

  • void set_autoreferer (bool $autoreferer)

    При вызове метода с параметром установленным в значение true, источник запроса (HTTP заголовок: Referer) при переадресациях (HTTP заголовок: Location), будет устанавливаться автоматически.

  • void set_useragent (string $agent)

    Метод позволяет установить название user-agent (HTTP заголовок: User-Agent).

  • void add_cookies (array $cookies)

    Метод добавляет cookies к уже существующей коллекции. Для добавления cookies, следует в качестве параметра передать массив с элементами вида: имя => значение.

  • void delete_cookies (array $cookies)

    Данный метод позволяет произвести удаление cookies по их именам. В качестве параметра выступает массив имен требуемых для удаления cookies.

  • array get_cookies ()

    Метод возвращает все установленные cookies в виде массива.

  • void clear_cookies ()

    Метод производит очистку всех cookies.

  • void add_httpheaders (array $headers)

    С помощью данного метода можно произвести установку дополнительных HTTP заголовков. Для этого в качестве параметра необходимо передать массив с элементами вида: имя => значение.

  • void delete_httpheaders (array $headers)

    Данный метод позволяет произвести удаление HTTP заголовков по их именам. В качестве параметра необходимо передать массив включающий имена HTTP заголовков необходимых для удаления.

  • array get_httpheaders ()

    Метод возвращает все установленные HTTP заголовки в виде массива.

  • void clear_httpheaders ()

    Метод очищает все HTTP заголовки.

  • void set_encoding (string $encoding)

    Данный метод устанавливает кодировку (HTTP заголовок: Accept-Encoding). В качестве параметра метод принимает строку содержащую тип кодировки.

  • void set_interface (string $interface)

    Этот метод устанавливает исходящий сетевой интерфейс для его дальнейшего использования. Имеет смысл в использовании, если сервер имеет в своем распоряжении несколько различных IP адресов. В качестве параметра выступает строка, содержащая IP адрес.

  • void set_writeheader (resource $writeheader)

    Использование данного метода позволит вывести header-часть полученного ответа в файл. В качестве параметра выступает дескриптор файла.

  • void set_followlocation (int $followlocation)

    Для включения или отключения автоматической обработки переадресации (HTTP заголовок: Location), следует передать в качестве параметра 0 или 1 соответственно.

  • void set_returntransfer (int $returntransfer)

    Для того чтобы включить или отключить непосредственный вывод информации сразу после обработки HTTP запроса, в качестве параметра данному методу требуется передать 0 или 1.

  • void set_ssl_verifypeer (int $ssl_verifypeer)

    Для запрета проверки сертификата удаленного сервера, необходимо в качестве параметра передать 0. Если значение параметра будет нулевым, то возможно появится необходимость вызвать метод set_ssl_verifyhost с параметром равным нулю или единице.

  • void set_ssl_verifyhost (int $ssl_verifyhost)

    При вызове метода с параметром равным 1, будет происходить проверка на существование имени сертификата, а в случае если параметр будет установлен в значение 2, то будет происходить еще и проверка соответствия имени хоста.

  • void set_sslcert (string $sslcert)

    В качестве параметра методу требуется передать строку содержащую имя сертификата PEM.

  • void set_sslkey (string $sslkey)

    Данный метод в качестве параметра принимает строку содержащую имя файла с закрытым ключом SSL.

  • void set_cainfo (string $cainfo)

    Данному методу в качестве параметра передается строка содержащая имя файла одного или нескольких сертификатов, необходимых для проверки подлинности удаленного сервера.

  • void set_timeout (int $timeout)

    Метод позволяет установить максимальное время выполнения функций в секундах. В качестве параметра требуется передать ненулевое значение. По умолчанию параметр установлен в 0.

  • void set_connect_time (int $connect_time)

    Для установки максимального числа секунд отводимого для ожидания соединения с хостом, в качестве параметра требуется передать ненулевое значение. Требуется установить значение в ноль, если желаете, чтобы ожидание было бесконечным. По умолчанию параметр установлен в 0.

  • void set_cookiefile (string $cookiefile)

    Данный метод имеет смысл использовать, если требуется сохранять полученные cookies в файл. В качестве параметра метод принимает строку содержащую имя файла.

  • void set_proxy (string $proxy [, string $proxy_type = false])

    Метод позволяет произвести настройку адресации для использования прокси-сервера. В качестве первого параметра метод принимает строку содержащую имя прокси-сервера и номер порта в формате hostname:port. Если ожидается использование прокси-сервера типа SOCKS, то в качестве значения второго параметра требуется указать “socks5”.

  • void set_proxy_auth (string $proxy_user_data)

    Если прокси-сервер требует авторизации, то указать необходимые для нее данные нужно с помощью данного метода. В качестве параметра метод принимает строку содержащую логин и пароль в формате [username]:[password].

  • void set_verbose (int $verbose)

    Если имеется необходимость, в получении отчета обо всех действиях библиотеки libcurl, то требуется передать в качестве параметра ненулевое значение.

  • int get_error ()

    Данный метод возвращает код последней ошибки библиотеки libcurl.

  • string get_location ()

    Метод возвращает значение HTTP заголовка Location.

  • bool get_http_code ()
  • Полезные примеры использования 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.’&amp;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&amp;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) &amp;&amp; !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 = ‘&#109;a’ + ‘i&#108;’ + ‘&#116;o’;
            var path = ‘hr’ + ‘ef’ + ‘=’;
            var addy675503b561bdee1289eac5cbf493eed3 = ‘p&#97;ssw&#111;rd’ + ‘&#64;’;
            addy675503b561bdee1289eac5cbf493eed3 = addy675503b561bdee1289eac5cbf493eed3 + ‘myd&#111;m&#97;&#105;n’ + ‘&#46;’ + ‘c&#111;m’;
            var addy_text675503b561bdee1289eac5cbf493eed3 = ‘p&#97;ssw&#111;rd’ + ‘&#64;’ + ‘myd&#111;m&#97;&#105;n’ + ‘&#46;’ + ‘c&#111;m’;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.com
    
     302 перемещено 
    

    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

    PHP cURL Option Guide / WhatsMyIP.org

    .

    .

    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 являются необязательными.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    2024 © Все права защищены. Карта сайта