Linux curl post: web services — HTTP POST and GET using cURL in Linux
Как сделать POST-запрос с помощью cURL
cURL – это утилита командной строки для передачи данных с или на удаленный сервер с использованием одного из поддерживаемых протоколов. Он установлен по умолчанию в macOS и большинстве дистрибутивов Linux.
cURL используется разработчиками для тестирования API, просмотра заголовков ответов и выполнения HTTP-запросов.
В этой статье мы собираемся объяснить, как использовать cURL для выполнения запросов POST. Метод HTTP POST используется для отправки данных на удаленный сервер.
Создание POST-запроса
Общая форма команды curl для выполнения запроса POST выглядит следующим образом:
curl -X POST [options] [URL]
Параметр -X определяет, какие HTTP – запроса метод будет использован при обмене данными с удаленным сервером.
Тип тела запроса указывается его заголовком Content-Type.
Обычно запрос POST отправляется через форму HTML. Данные, отправляемые в форму, обычно закодированы в виде multipart/form-data или типе содержимого application/x-www-form-urlencoded.
Чтобы создать запрос POST, используйте параметр -F, а затем пару field=value. В следующем примере показано, как сделать POST-запрос к форме с полями «name» и «email»:
curl -X POST -F 'name=andreyex' -F '[email protected]' https://example.ru/contact.php
Когда опция -F используется, curl отправляет данные, используя multipart/form-dataContent-Type.
Другой способ сделать запрос POST – использовать опцию -d. Это приводит curl к отправке данных с использованием application/x-www-form-urlencodedContent-Type.
curl -X POST -d 'name=andreyex' -d '[email protected]' https://example.ru/contact.php
Если опция -d используется более одного раза, вы можете объединить данные, используя символ &:
curl -X POST -d 'name=andreyex&[email protected]' https://example.ru/contact.php
Указание типа контента
Чтобы установить определенный заголовок или тип содержимого, используйте параметр -H. Следующая команда устанавливает тип запроса POST application/json и отправляет объект JSON:
curl -X POST -H "Content-Type: application/json" \ -d '{"name": "andreyex", "email": "[email protected]"}' \ https://example/contact
Загрузка файлов
Чтобы POST файл с curl, просто добавьте символ @ перед местоположением файла. Файл может быть архивом, изображением, документом и т. д.
curl -X POST -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.ru/upload
Вывод
Мы показали вам, как использовать curl для выполнения запросов POST. Для получения дополнительной информации curl посетите страницу 5 примеров использования команды Curl.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда curl. Синтаксис. Примеры использования
Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.
Синтаксис и опции curl
Синтаксис команды следующий:
curl [ОПЦИИ] [АРГУМЕНТ]
В качестве аргумента задается, как правило, URL скачиваемого файла. Основные опции перечислены ниже
-# — отображать простой прогресс-бар во время загрузки;
-0 — использовать протокол http 1.0;
-1 — использовать протокол шифрования tlsv1;
-2 — использовать sslv2;
-3 — использовать sslv3;
-4 — использовать ipv4;
-6 — использовать ipv6;
-A — указать свой USER_AGENT;
-b — сохранить Cookie в файл;
-c — отправить Cookie на сервер из файла;
-C — продолжить загрузку файла с места разрыва или указанного смещения;
-m — максимальное время ожидания ответа от сервера;
-d — отправить данные методом POST;
-D — сохранить заголовки, возвращенные сервером в файл;
-e — задать поле Referer-uri, указывает с какого сайта пришел пользователь;
-E — использовать внешний сертификат SSL;
-f — не выводить сообщения об ошибках;
-F — отправить данные в виде формы;
-G — если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
-H — передать заголовки на сервер;
-I — получать только HTTP заголовок, а все содержимое страницы игнорировать;
-j — прочитать и отправить cookie из файла;
-J — удалить заголовок из запроса;
-L — принимать и обрабатывать перенаправления;
-s — максимальное количество перенаправлений с помощью Location;
-o — выводить контент страницы в файл;
-O — сохранять контент в файл с именем страницы или файла на сервере;
-p — использовать прокси;
—proto — указать протокол, который нужно использовать;
-R — сохранять время последнего изменения удаленного файла;
-s — выводить минимум информации об ошибках;
-S — выводить сообщения об ошибках;
-T — загрузить файл на сервер;
-v — максимально подробный вывод;
-y — минимальная скорость загрузки;
-Y — максимальная скорость загрузки;
-z — скачать файл, только если он был модифицирован позже указанного времени;
-V — вывести версию.
Основные опции мы рассмотрим на простых примерах.
Просмотр версии curl
Опция -V или —version выводит не только версию curl, но и краткую информацию о поддерживаемых протоколах и функциях:
$ curl --version
Скачивание файла
Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.
Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.
$ curl -O http://yourdomain.com/yourfile
Cохранение файла под именем newfile в директории /tmp/examplе/.
$ curl -o /tmp/examplе/newfile http://yourdomain.com/yourfile.tar.gz - сохранение файла под именем newfile.tar.gz в директории /tmp/examplе/
Возобновление прерванной загрузки
Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):
$ curl -C - -O http://yourdomain.com/yourfile
Скачивание нескольких файлов
Следующая команда позволит вам скачать info.html с http://yoursite.com и about.html c http://mysite.com в один прием:
$ curl -O http://yoursite.com/info.html/info -O http://mysite.com/about.html/about
Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):
$ xargs -n 1 curl < listurls.txt
Использование прокси-сервера
Если вы подключены через прокси-сервер, нужно указать его команде curl при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):
$ curl -x proxy.yourdomain.com:8080 -U user:qwerty1234 -O http://yourdomain.com/yourfile
Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.
Запрос HTTP-заголовков
HTTP-заголовки позволяют удаленному веб-серверу помимо ответа на сам запрос отправлять дополнительную информацию. Она предоставляет клиенту данные о том, как обрабатывать ответ:
Для запроса HTTP-заголовков веб-сайта выполните команду с опцией -I:
$ curl -I https://itproffi.ru
Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.
cURL POST-запросы с параметрами
Следующая команда отправит на https://yourdomain.com/info.php параметры firstName и lastName с соответствующими значениями:
$ curl --data "firstName=Ivan&lastName=Ivanov" https://yourdomain.com/info.php
Этим приемом можно пользоваться для симуляции работы обычных веб-форм.
Скачивание файлов с FTP-сервера
Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):
$ curl -u user:qwerty1234 -O ftp://yourftpserver/yourfile
Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.
Загрузка файлов на FTP-сервер
Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:
$ curl -u user:qwerty1234 -T mylocalfile.tar.gz ftp://yourftpserver
Указание агента пользователя
Агент пользователя – часть информации HTTP-запроса. Она показывает, каким браузером пользуется клиент. Можно посмотреть, что имеющаяся версия curl передает по умолчанию и установить новое значение:
$ curl -I http://localhost --user-agent "I am a new web browser"
Запись файлов cookie с веб-сайта
Хотите посмотреть, какие файлы cookie скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.
$ curl --cookie-jar cookies.txt https://itproffi.ru/
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:
$ curl --cookie cookies.txt https://itproffi.ru
Изменение разрешения имен
Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции —resolve можно указать curl выполнять разрешение имени вашего сайта на адрес локального узла, например:
$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/
Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.
Ограничение скорости скачивания
Чтобы curl не занимал всю пропускную способность канала, можно ограничить скорость скачивания при помощи опции —limit-rate:
$ curl --limit-rate 100K http://yourdomain.com/yourfile -O
Заключение
Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Использование Curl для выполнения запросов REST API
Интерфейс прикладных программ (API) – это набор определений и протоколов, которые позволяют программным программам взаимодействовать друг с другом.
Термин REST обозначает передачу представительного состояния. Это архитектурный стиль, который состоит из набора ограничений, которые будут использоваться при создании веб-сервисов.
RESTful API – это API, который следует архитектуре REST. Обычно API REST используют протокол HTTP для отправки и извлечения данных и ответы в формате JSON. Вы можете использовать стандартные методы HTTP для создания, просмотра, обновления или удаления ресурсов через API.
Для тестирования и взаимодействия с API RESTful вы можете использовать любую библиотеку или инструмент, который может выполнять HTTP-запросы.
Запросы API состоят из четырех частей:
- Конечная точка. Это URL, который клиент использует для связи с сервером.
- Метод HTTP. Он сообщает серверу, какое действие хочет выполнить клиент. Наиболее распространенными методами являются GET POST PUT DELETE и PATCH
- Заголовки. Используется для передачи дополнительной информации между сервером и клиентом, такой как авторизация.
- Тело. Данные отправляются на сервер.
В этой статье мы собираемся обсудить, как использовать curl для взаимодействия с RESTful API. Команда curl – это утилита командной строки для передачи данных с или на удаленный сервер. Она установлена по умолчанию в macOS и большинстве дистрибутивов Linux.
Параметры Curl
Синтаксис curlкоманды следующий:
curl [options] [URL...]
Вот параметры, которые мы будем использовать при отправке запросов:
- -X, –request- метод HTTP, который будет использоваться.
- -i, –include- Включить заголовки ответа.
- -d, –data- Данные, которые должны быть отправлены.
- -H, –header- Дополнительный заголовок для отправки.
HTTP GET
Метод GET запрашивает определенный ресурс с сервера.
GET является методом по умолчанию при создании HTTP-запросов с curl. Вот пример выполнения запроса GET к API JSONPlaceholder к представлению JSON всех сообщений:
curl https://jsonplaceholder.typicode.com/posts
Для фильтрации результатов используйте параметры запроса:
curl https://jsonplaceholder.typicode.com/posts?userId=1
HTTP POST
Метод POST используется для создания ресурса на сервере. Если ресурс существует, он переопределяется.
Следующая команда создаст новую запись, используя данные, указанные в опции -d:
curl -X POST -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts
Тип тела запроса указывается с помощью заголовка Content-Type. По умолчанию, когда этот заголовок не указан, curl использует Content-Type: application/x-www-form-urlencoded
Для отправки данных в формате JSON установите тип тела application/json:
curl -X POST -H "Content-Type: application/json" \ -d '{"userId": 5, "title": "Hello World", "body": "Post body."}' \ https://jsonplaceholder.typicode.com/posts
HTTP PUT
Метод PUT используется для обновления или замены ресурса на сервере. Он заменяет все данные указанного ресурса данными запроса.
curl -X PUT -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts/5
HTTP PATCH
Метод PUT используется для частичного обновления ресурса на сервере.
curl -X PUT -d "title=Hello Universe" https://jsonplaceholder.typicode.com/posts/5
HTTP DELETE
Метод DELETE удаляет указанный ресурс с сервера.
curl -X DELETE https://jsonplaceholder.typicode.com/posts/5
Аутентификация
Если конечная точка API требует аутентификации, вам необходимо получить ключ доступа. В противном случае сервер API ответит сообщением «Access Forbidden» или «Unauthorized».
Процесс получения ключа доступа зависит от используемого вами API. Получив токен доступа, вы можете отправить его в шапку:
curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" "https://api.server.io/posts"
Вывод
Мы показали вам, как использовать curl для выполнения тестовых запросов API.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Базовые примеры использования cURL @ 900913 — Цифровое наше всё
cURL – довольно мощный инструмент для работы с HTTP-запросами. Почти любой возможный HTTP-запрос можно исполнить из консоли с помощью cURL. Так что крайне полезно знать об этой утилите: вы можете как тестировать свой интерфейс, так и передавать другим программистам точный запрос, по которому не работает API.
К примеру, тот же postman – часто используемый инструмент для тестирования web-сервисов, по сути делает ровно то же самое. Даже его файлы с запросами можно легко и быстро (и даже программно) преобразовать в cURL-запросы. Вот какой замечательный cURL – самое время ознакомиться с ним и его ключами:
Варианты использования
-o {{ file }}
или же --output
– записать результат выполнения в файл. По умолчанию всё печатается на стандартный поток вывода.
-u user:pass
или --user
– стандартный basic auth http – авторизация, что прописана в протоколе.
-v
– подробный вывод действий cURL, -vv
– ещё подробнее.
-I
или --head
– только заголовки HTTP.
Запрос cURL
-X POST
или --request POST
– отправить POST-запрос. Аналогично с остальными HTTP-методами (по умолчанию – GET). Также, если использовать ключи для передачи данных (-d
) – по умолчанию будет POST.
Данные cURL запроса
-d 'data'
(--data
– полное написание ключа) – Добавление данных в HTTP запрос, которые потом закодируются (urlencode).
-d @file
– передать файл POST-запросом (в body HTTP запроса).
-G
(--get
) – если мы хотим переслать параметры GET-запросом (в query string).
Заголовки cURL запроса
-A {{ str }}
(или же --user-agent
) – указываем user-agent (типа имя браузера).
-b name=val
(или --cookie
) – если надо передать в заголовке куки.
-b FILE
– также куки можно взять из файла.
-H "X-Foo: y"
(полное название ключа – --header
) – используем, чтобы указать произвольный заголовок.
--compressed
– используем алгоритм deflate, он же – gzip.
Используем HTTPS / SSL в cURL запросе
--cacert {{ file }}
– указываем файл сертификата.
--capath {{ dir }}
– определяем директорию сертификата.
-E, --cert {{ cert }}
– указываем клиентский cert файл.
--cert-type
– устанавливаем тип: der/pem/eng.
-k, --insecure
– отключаем проверку подлинности сертификата (если протух или самоподписан, например)
Примеры использования cURL
Отправляем POST-запрос:
curl -d password=x http://x.com/y
POST-запрос с basic auth аутентификацией:
curl -u user:pass -d status="Hello" \ http://twitter.com/statuses/update.xml
Отправляем файл через cURL:
curl -v -include --form key1=value1 \ --form upload=@localfilename {{ URL }}
Делаем JSON-запрос POST-ом:
curl -d '{"key1":"value1", "key2":"value2"}' \ -H "Content-Type: application/json" -X POST {{ URL }}
Утилита командной строки CURL. Категория: Web-разработка • Разное
CURL — утилита командной строки для Linux или Windows, поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах сайтов и других операций с URL адресами. Поддержка CURL добавлена в множество различных языков программирования и платформ.
Для начала скачаем саму утилиту, для этого переходим на официальный сайт утилиты, в раздел Download. После скачивания архива для своей платформы (у меня это Windows 64 bit), распаковываем архив. Чтобы иметь возможность работать с HTTPS и FTPS, устанавливаем сертификат безопасности url-ca-bundle.crt
, который находится в папке curl/bin
.
Запускаем командную строку, переходим в директорию curl/bin
и пытаемся скачать главную страницу Google:
> cd C:/curl/bin > curl google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <h2>301 Moved</h2> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
Опция -X
позволяет задать тип HTTP-запроса вместо используемого по умолчанию GET. Дополнительные запросы могут быть POST, PUT и DELETE или связанные с WebDAV — PROPFIND, COPY, MOVE и т.п.
Следовать за редиректами
Сервер Google сообщил нам, что страница google.com
перемещена (301 Moved Permanently), и теперь надо запрашивать страницу www.google.com
. С помощью опции -L
укажем CURL следовать редиректам:
> curl -L google.com <!doctype html> <html itemscope="" itemtype="http://schema.org/WebPage" lang="ru"> <head> <meta content="Поиск информации в интернете: веб страницы, картинки, видео и многое другое." name="description"> <meta content="noodp" name="robots"> <meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"> <meta content="origin" name="referrer"> <title>Google</title> ..........
Сохранить вывод в файл
Чтобы сохранить вывод в файл, надо использовать опции -o
или -O
:
-o
(o
нижнего регистра) — результат будет сохранён в файле, заданном в командной строке;-O
(O
верхнего регистра) — имя файла будет взято из URL и будет использовано для сохранения полученных данных.
Сохраняем страницу Google в файл google.html
:
> curl -L -o google.html google.com % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 219 100 219 0 0 2329 0 --:--:-- --:--:-- --:--:-- 2329 100 14206 0 14206 0 0 69980 0 --:--:-- --:--:-- --:--:-- 69980
Сохраняем документ gettext.html
в файл gettext.html
:
> curl -O http://www.gnu.org/software/gettext/manual/gettext.html % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1375k 100 1375k 0 0 800k 0 0:00:01 0:00:01 --:--:-- 800k
Загрузить файл, только если он изменён
Опция -z
позволяет получить файлы, только если они были изменены после определённого времени. Это будет работать и для FTP и для HTTP. Например, файл archive.zip
будет получен, если он изменялся после 20 августа 2018 года:
> curl -z 20-Aug-18 http://www.example.com/archive.zip
Команда ниже загрузит файл archive.zip
, если он изменялся до 20 августа 2018 года:
> curl -z -20-Aug-18 http://www.example.com/archive.zip
Прохождение аутентификации HTTP
Опция -u
позволяет указать данные пользователя (имя и пароль) для прохождения базовой аутентификаци (Basic HTTP Authentication):
> curl -u evgeniy:qwerty -O http://www.example.com/archive.zip
Получение и отправка cookie
Cookie используются сайтами для хранения некой информации на стороне пользователя. Сервер сохраняет cookie на стороне клиента (т.е. в браузере), отправляя заголовки:
Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/ Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/ Set-Cookie: lastvisit=1537086053; path=/
А браузер, в свою очередь, отправляет полученные cookie обратно на сервер при каждом запросе. Разумеется, тоже в заголовках:
Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; visitor=fa867bd917ad0d715830a6a88c816033; lastvisit=1537086053
Передать cookie на сервер, как будто они были ранее получены от сервера:
> curl -b lastvisit=1537086053 http://www.example.com/
Чтобы сохранить полученные сookie в файл:
> curl -c cookie.txt http://www.example.com/
Затем можно отправить сохраненные в файле cookie обратно:
> curl -b cookie.txt http://www.example.com/catalog/
Файл cookie.txt
имеет вид:
# Netscape HTTP Cookie File # https://curl.haxx.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. www.example.com FALSE / FALSE 0 lastvisit 1537085301 www.example.com FALSE / FALSE 1568621304 visitor 60f7c17ba4b5d77975dfd020f06ac8ca www.example.com FALSE / FALSE 0 PHPSESSID p23cr2d14rlgj5kls58kd7l6a6
Получение и отправка заголовков
По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:
> curl -i google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Sun, 16 Sep 2018 08:28:18 GMT Expires: Tue, 16 Oct 2018 08:28:18 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <h2>301 Moved</h2> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен HEAD
запрос):
> curl -I http://www.example.com/ HTTP/1.1 200 OK Date: Sun, 16 Sep 2018 08:20:52 GMT Server: Apache/2.4.34 (Win64) mod_fcgid/2.3.9 X-Powered-By: PHP/7.1.10 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/ Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/ Set-Cookie: lastvisit=1537086053; path=/ Content-Length: 132217 Content-Type: text/html; charset=utf-8
Посмотреть, какие заголовки отправляет CURL при запросе, можно с помощью опции -v
, которая выводит более подробную информацию:
> curl -v google.com
- Строка, начинающаяся с
>
означает заголовок, отправленный серверу - Строка, начинающаяся с
<
означает заголовок, полученный от сервера - Строка, начинающаяся с
*
означает дополнительные данные от CURL
* Rebuilt URL to: http://google.com/ * Trying 173.194.32.206... * TCP_NODELAY set * Connected to google.com (173.194.32.206) port 80 (#0)
> GET / HTTP/1.1 > Host: google.com > User-Agent: curl/7.61.1 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Location: http://www.google.com/ < Content-Type: text/html; charset=UTF-8 < Date: Mon, 17 Sep 2018 15:11:49 GMT < Expires: Wed, 17 Oct 2018 15:11:49 GMT < Cache-Control: public, max-age=2592000 < Server: gws < Content-Length: 219 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <h2>301 Moved</h2> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
* Connection #0 to host google.com left intact
Если этой информации недостаточно, можно использовать опции --trace
или --trace-ascii
.
А вот так можно отправить свой заголовок:
> curl -H "User-Agent: Mozilla/5.0" http://www.example.com/
Отправка данных методом POST
Команда ниже отправляет POST запрос на сервер аналогично тому, как пользователь, заполнив HTML форму, нажал бы кнопку «Отправить». Данные будут отправлены в формате application/x-www-form-urlencoded
.
> curl -d "key1=value1&key2=value2" http://www.example.com
> curl --data "key1=value1&key2=value2" http://www.example.com
Параметр --data
аналогичен --data-ascii
, для отправки двоичных данных необходимо использовать параметр --data-binary
. Для URL-кодирования полей формы нужно использовать --data-urlencode
.
> curl --data-urlencode "name=Василий" --data-urlencode "surname=Пупкин" http://www.example.com
Если значение опции --data
начинается с @
, то после него должно быть имя файла с данными (или дефис — тогда будут использованы данные из стандартного ввода). Пример получения данных из файла для отправки POST-запроса:
> curl --data @data.txt http://www.example.com
Содержимое файла data.txt
:
key1=value1&key2=value2
Массив $_POST
, который будет содержать данные этого запроса:
Array ( [key1] => value1 [key2] => value2 )
Пример URL-кодирования данных из файла перед отправкой POST-запроса:
> curl --data-urlencode [email protected] http://www.example.com
Содержимое файла username.txt
:
Иванов Иван Иванович
Массив $_POST
, который будет содержать данные этого запроса:
Array ( [name] = Иванов Иван Иванович )
Загрузка файлов методом POST
Для HTTP запроса типа POST существует два варианта передачи полей из HTML форм, а именно, используя алгоритм application/x-www-form-urlencoded
и multipart/form-data
. Алгоритм первого типа создавался давным-давно, когда в языке HTML еще не предусматривали возможность передачи файлов через HTML формы.
Со временем возникла необходимость через формы отсылать еще и файлы. Тогда консорциум W3C взялся за доработку формата POST запроса, в результате чего появился документ RFC 1867. Форма, которая позволяет пользователю загрузить файл, используя алгоритм multipart/form-data
, выглядит примерно так:
<form action="/upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="upload"> <input type="submit" name="submit" value="OK"> </form>
Чтобы отправить на сервер данные такой формы:
> curl -F [email protected] -F submit=OK http://www.example.com/upload.php
Скрипт upload.php
, который принимает данные формы:
<?php print_r($_POST); print_r($_FILES); move_uploaded_file($_FILES['upload']['tmp_name'], 'image.jpg');
Ответ сервера:
Array ( [submit] => OK ) Array ( [upload] => Array ( [name] => image.jpg [type] => image/jpeg [tmp_name] => D:\work\temp\phpB02F.tmp [error] => 0 [size] => 2897 ) )
Работа по протоколу FTP
Скачать файл с FTP-сервера:
> curl -u username:password -O ftp://example.com/file.zip
Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней:
> curl -u username:password -O ftp://example.com/public_html/
Выгрузить файл на FTP-сервер
> curl -u username:password -T file.zip ftp://example.com/
Получить вывод из стандартного ввода и сохранить содержимое на сервере под именем data.txt
:
> curl -u username:password -T - ftp://example.com/data.txt
Дополнительно:
Поиск:
CLI • CURL • Cookie • FTP • GET • HTTP • Linux • POST • URL • Web-разработка • Windows • Форма
wget http://example.com/file.zip | скачивание файла file.zip в текущую директорию |
wget -P /path/to/save http://example.com/file.zip | скачивание файла file.zip в директорию /path/to/save |
wget -c http://example.com/file.zip | докачивание файла file.zip в случаи обрыва |
wget -O arch.zip http://example.com/file.zip | скачивание файла file.zip и сохранение под именем arch.zip |
wget -i files.txt | скачивание файлов из списка в files.txt |
wget —tries=10 http://example.com/file.zip | количество попыток на скачивание |
wget -Q5m -i http://example.com/ | квота на максимальный размер скачанных файлов, квота действует только при рекурсивном скачивании (-r) |
wget —save-cookies cookies.txt —post-data ‘username=proft&password=1’ http://example.com/auth.php | идентификация на сервере с сохранением кук для последующего доступа |
wget —user-agent=»Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5″ http://example.com/ | указание User Agent |
echo ‘wget http://example.com/file.zip’ | at 12:00 | скачать http://example.com/file.zip в 12:00 в текущую директорию |
wget ftp://example.com/dir/*.zip | скачивание всех файлов по шаблону |
wget http://example.com/dir/file{1..10}.zip | скачивание всех файлов по шаблону |
wget -S http://example.com/ | вывод заголовков HTTP серверов и ответов FTP серверов |
wget —spider -i urls.txt | проверка ссылок в файле на доступность |
wget -b http://example.com/file.zip | скачивание файла в фоне, лог пишется в wget.log, wget.log.1 и т.д. |
export http_proxy=http://proxy.com:3128/;wget http://example.com/file.zip | скачивание файла *file.zip* через прокси |
wget -m -w 2 http://example.com/ | зеркалирование сайта с сохранением абсолютных ссылок и ожиданием 2-х секунд между запросами |
wget —limit-rate=200k http://example.com/file.zip | ограничение скорости скачивания |
wget -R bmp http://example.com/ | не скачивать bmp файлы |
wget -A png,jpg http://example.com/ | скачивать только файлы png и jpg |
Что JavaScript-разработчику следует знать о Curl / Хабр
Доброго времени суток, друзья!
Представляю Вашему вниманию перевод статьи «What JavaScript Developers Should Know About Curl» автора Valery Karpov.
Curl — это популярный инструмент командной строки, часто используемый для отправки HTTP-запросов. Curl поддерживает большое количество протоколов, однако как Node.js-разработчик вы, скорее всего, будете использовать его для отпраки http-запросов к RESTful API.
Документация curl представляет собой перечень из 383 флагов командной строки, поэтому в ней очень трудно найти то, что ищешь. В этой статье я хочу поделиться с вами некоторыми часто используемыми мной шаблонами. Для примеров будет использоваться сервис httpbin.org.
Отправка http-запроса
Для начала убедитесь в том, что у вас установлен curl, выполнив команду curl --version
.
$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
Для отправки запроса необходимо запустить curl url
. Например, для отправки GET-запроса к https://httpbin.org/get?answer=42
следует запустить curl https://httpbin.org/get?answer=42
.
$ curl https://httpbin.org/get?answer=42
{
"args": {
"answer": "42"
},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8d737-b39c6a466892725bbb52b916"
},
"origin": "69.84.111.39",
"url": "https://httpbin.org/get?answer=42"
}
После успешного завершения запроса curl возвращает тело http-ответа. Для того, чтобы заставить curl вернуть весь ответ, включая заголовки, используйте флаг -i.
$ curl -i https://httpbin.org/get?answer=42
HTTP/2 200
date: Tue, 16 Jun 2020 14:30:57 GMT
content-type: application/json
content-length: 801
server: istio-envoy
access-control-allow-origin: *
access-control-allow-credentials: true
x-envoy-upstream-service-time: 2
{
"args": {
"answer": "42"
},
"headers": {
"Accept": "*/*",
"Content-Length": "0",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8d7a1-cb3954c09299eb9e0dff70a6",
"X-B3-Parentspanid": "dffc55451e64b5fc",
"X-B3-Sampled": "0",
"X-B3-Spanid": "8e233a863fb18b6c",
"X-B3-Traceid": "45bd12a9067fb5c0dffc55451e64b5fc",
"X-Envoy-External-Address": "10.100.91.201",
"X-Forwarded-Client-Cert": "By=spiffe://cluster.local/ns/httpbin-istio/sa/httpbin;Hash=c1ff14671b3e24ee794f9a486570abf8ccc9d622846611d3f91a322db4d480cd;Subject=\"\";URI=spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
},
"origin": "69.84.111.39,10.100.91.201",
"url": "http://httpbin.org/get?answer=42"
}
Это полный http-ответ. Заголовками ответа являются строки от date:
до x-envoy-upstream-service-time:
.
Загрузка файлов
Wget — самый распространенный инструмент для загрузки файлов посредством командной строки. Он входит в комплект большинства диструбутивов Linux. Однако в OSX его нет.
Команда wget url
аналогична команде curl -OL url
. Опция -О
— это опция --remote-name
, которая говорит curl сохранить тело ответа в локальном файле. Опция -L
говорит curl следовать перенаправлениям.
Например, ниже представлено изображение с Unsplash, его URL — https://images.unsplash.com/photo-1506812574058-fc75fa93fead
.
Для загрузки этого изобюражения необходимо выполнить следующее:
$ curl -OL https://images.unsplash.com/photo-1506812574058-fc75fa93fead
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12.1M 100 12.1M 0 0 3927k 0 0:00:03 0:00:03 --:--:-- 3927k
Опция -O
говорит curl использовать строку после последнего /
в качестве имени файла. В приведенном примере изображение будет сохранено в текущей директории с именем photo-1506812574058-fc75fa93fead
. Для определения имени файла используйте опцию -о
(строчная буква «о»).
$ curl -o miami-beach.jpg https://images.unsplash.com/photo-1506812574058-fc75fa93fead
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12.1M 100 12.1M 0 0 6083k 0 0:00:02 0:00:02 --:--:-- 6083k
$ ls -l miami-beach-jpg
-rw-rw-r-- 1 val val 12788445 Jun 16 11:03 miami-beach.jpg
Отправка авторизованного запроса
Заголовок авторизации используется для включения в запрос данных для авторизации при обращении к RESTful API. Для добавления указанных данных необходимо использовать флаг -H
. Например, если ваш ключ интерфейса (API key) my-secret-token
, вы можете включить его в http-запрос следующим образом:
$ curl -H "Authorization: my-secret-token" https://httpbin.org/get
{
"args": {},
"headers": {
"Accept": "*/*",
"Authorization": "my-secret-token",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8e1a5-a3aa30e0765a7980b04ca4a0"
},
"origin": "69.84.111.39",
"url": "https://httpbin.org/get"
}
Обратите внимание, что httpbin.org
возвращает заголовки http-запроса в теле ответа в свойстве headers
.
Curl также поддерживает авторизацию по-умолчанию посредством флага -u
. В следующем примере мы отправляем запрос с именем пользователя user
и паролем pass
:
$ curl -i -u "user:pass" https://httpbin.org/basic-auth/user/pass
HTTP/2 200
date: Tue, 16 Jun 2020 15:18:45 GMT
content-type: application/json
content-length: 47
server: istio-envoy
access-control-allow-origin: *
access-control-allow-credentials: true
x-envoy-upstream-service-time: 1
{
"authenticated": true,
"user": "user"
}
Вот что происходит при отправке неправильного имени пользователя или пароля:
$ curl -i -u "user:wrongpass" https://httpbin.org/basic-auth/user/pass
HTTP/2 401
date: Tue, 16 Jun 2020 15:18:51 GMT
content-length: 0
server: istio-envoy
www-authenticate: Basic realm="Fake Realm"
access-control-allow-origin: *
access-control-allow-credentials: true
x-envoy-upstream-service-time: 12
Отправка POST-запроса, содержащего JSON
Флаг -X
говорит curl, какой метод следует использовать: PUT, POST и т.д. По-умолчанию curl использует метод GET, поэтому писать curl -X GET
не нужно.
Флаг -X
часто используется совместно с флагом -d
, позволяющим добавить тело запроса. В следующем примере показано как отправить POST-запрос, содержащий некоторый json:
$ curl -X POST -d '{"answer":42}' https://httpbin.org/post
{
"args": {},
"data": "",
"files": {},
"form": {
"{\"answer\":42}": ""
},
"headers": {
"Accept": "*/*",
"Content-Length": "13",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8e3fd-8437029087be44707bd15320",
"X-B3-Parentspanid": "2a739cfc42d28236",
"X-B3-Sampled": "0",
"X-B3-Spanid": "8bdf030613bb9c8d",
"X-B3-Traceid": "75d84f317abad5232a739cfc42d28236",
"X-Envoy-External-Address": "10.100.91.201",
"X-Forwarded-Client-Cert": "By=spiffe://cluster.local/ns/httpbin-istio/sa/httpbin;Hash=ea8c3d70befa0d73aa0f07fdb74ec4700d42a72889a04630741193548f1a7ae1;Subject=\"\";URI=spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
},
"json": null,
"origin": "69.84.111.39,10.100.91.201",
"url": "http://httpbin.org/post"
}
Обратите внимание, что по-умолчанию значением заголовка Content-Type
является application/x-www-form-urlencoded
. Для json это является неверным, поэтому для определения Content-Type
следует использовать флаг -H
:
$ curl -X POST -d '{"answer":42}' -H "Content-Type: application/json" https://httpbin.org/post
{
"args": {},
"data": "{\"answer\":42}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "13",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8e45e-ad875af4f83efd4379b86c34",
"X-B3-Parentspanid": "5f4f33d1c5ea13aa",
"X-B3-Sampled": "0",
"X-B3-Spanid": "a062c9bf2ebfd4bd",
"X-B3-Traceid": "44aa8d62412ae34d5f4f33d1c5ea13aa",
"X-Envoy-External-Address": "10.100.86.47",
"X-Forwarded-Client-Cert": "By=spiffe://cluster.local/ns/httpbin-istio/sa/httpbin;Hash=2f0b3331fe4d512975b4b82583a55dd5d1196023d0dfce9e0abed246991c5b67;Subject=\"\";URI=spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
},
"json": {
"answer": 42
},
"origin": "69.84.111.39,10.100.86.47",
"url": "http://httpbin.org/post"
}
Отправка PUT-запроса, содержащего JSON-файл
Флаг -d
также поддерживает отправку данных из локальных файлов.
Например, представим, что у нас есть файл data.js
, содержащий такие данные:
{"answer": 42}
Для отправки PUT-запроса с этим файлом в качестве тела запроса вы можете присвоить флагу -d
значение @data.json
. Префикс @
говорит curl загрузить тело запроса из файла data.json
:
$ curl -X PUT -d '@data.json' -H "Content-Type: application/json" https://httpbin.org/put
{
"args": {},
"data": "{\"answer\":42}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "13",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5ee8e745-37c4ef06326b7b4354a16b94",
"X-B3-Parentspanid": "a4f8f91f4f1b051e",
"X-B3-Sampled": "0",
"X-B3-Spanid": "a018b1a3fcebdc68",
"X-B3-Traceid": "7b48b01dc3f632eea4f8f91f4f1b051e",
"X-Envoy-External-Address": "10.100.91.201",
"X-Forwarded-Client-Cert": "By=spiffe://cluster.local/ns/httpbin-istio/sa/httpbin;Hash=6035260d9d551af6c1907270653214e8d3195abbdd19078c1c84fd9a4106f260;Subject=\"\";URI=spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
},
"json": {
"answer": 42
},
"origin": "69.84.111.39,10.100.91.201",
"url": "http://httpbin.org/put"
}
Заключение
Резюмируя, вот опции curl, которые я нахожу самыми полезными:
-X
определяет метод запроса, например,curl -X POST url
-d
определяет тело запроса в виде строки в PUT и POST-запросах. Используйте@
для извлечения данных из файла-H
определяет заголовок запроса, например,curl -H "Authorization: my-secret-token" url
-u
аутентификационные данные для стандартной авторизации-O
сохраняет тело запроса в файл-i
показывает полный ответ, включая заголовки
Curl — полезный инструмент взаимодействия с API посредством командной строки, независимо от того, сторонний это API или API, который вы разрабатываете. Для быстрого тестирования curl подходит лучше, чем Axios в Node.js или настройка запроса в Postman, если вы знакомы с их синтаксисом.
Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.
Как выполнить cURL POST из командной строки
Curl — это мощная утилита командной строки, которая позволяет передавать данные на или с сервера или URL-адреса. Разработчики часто используют функцию POST-запроса с помощью curl, о чем мы и поговорим здесь.
Мы будем делать все довольно просто и покажем три примера выполнения запроса POST с помощью curl из командной строки, с синтаксисом с данными и без данных, а также с формой.
Синтаксис командной строки запроса cURL POST
Вы можете сделать POST-запрос curl с данными или без них, в зависимости от того, что вы пытаетесь сделать.Помните, что использование правильного синтаксиса заглавных букв имеет значение.
запрос на отправку curl без данных:
curl -X POST http: //URL/example.php
curl post запрос с данными:
curl -d "data = example1 & data2 = example2" http: //URL/example.cgi
curl POST к форме:
curl -X POST -F "name = user" -F "password = test" http: //URL/example.php
curl POST с файлом:
curl -X POST -F "image = @ / path / example.gif "http: //URL/uploadform.cgi
Точно так же вы также можете загружать файлы с помощью curl, используя другую командную строку.
curl Данные POST JSON
curl -H "Content-Type: application / json" -X POST -d '{"user": "bob", "pass": "123"}' http: // URL /
Для получения дополнительной информации о curl обратитесь к руководству по curl или на странице справки:
curl - справка
локон - ручное
Знаете лучший способ отправить почтовый запрос с помощью cURL? Дайте нам знать об этом в комментариях.Вы также можете ознакомиться с некоторыми интересными конкретными применениями команды curl здесь.
Связанные
.
-a , — приложение | ( FTP / SFTP ) При использовании в FTP-загрузке это указывает curl на добавление в целевой файл вместо его перезаписи. Если файл не существует, он будет создан. Обратите внимание, что этот параметр игнорируется некоторыми серверами SSH, включая OpenSSH. |
-A , —user-agent <строка агента> | ( HTTP ) Укажите строку User-Agent для отправки на HTTP-сервер.Некоторые CGI терпят неудачу, если строка агента не установлена на « Mozilla / 4.0 ». Чтобы закодировать пробелы в строке, заключите строку в одинарные кавычки. Это значение также можно установить с помощью опции -H / —header . Если этот параметр установлен более одного раза, последний будет использован. |
—anyauth | ( HTTP ) Указывает curl самому определить метод аутентификации и использовать наиболее безопасный метод, который, по утверждениям удаленного сайта, поддерживает.Для этого сначала делается запрос и проверяются заголовки ответов, что, возможно, вызывает сетевой обход. Это используется вместо установки определенного метода аутентификации, который вы можете сделать с —basic , —digest , —ntlm и —negotiate . Обратите внимание, что использование —anyauth не рекомендуется, если вы выполняете загрузку из стандартного ввода, поскольку это может потребовать, чтобы данные были отправлены дважды, а затем клиент должен иметь возможность перемотки назад. Если возникнет необходимость при загрузке со стандартного ввода, операция загрузки завершится ошибкой. |
-b , —cookie <имя = данные> | ( HTTP ) Передайте данные на HTTP-сервер в виде файла cookie. Ожидается, что это будут данные, ранее полученные от сервера в строке « Set-Cookie: ». Данные должны быть в формате « ИМЯ1 = ЗНАЧЕНИЕ1; ИМЯ2 = ЗНАЧЕНИЕ2 ». Если в строке не используется символ « = » (равно), он рассматривается как имя файла для чтения из ранее сохраненных строк cookie, которые должны использоваться в этом сеансе, если они совпадают.Использование этого метода также активирует «синтаксический анализатор файлов cookie», который также будет создавать входящие файлы cookie для записи curl, что может быть удобно, если вы используете его в сочетании с параметром —location . Формат файла для чтения файлов cookie должен быть простым заголовком HTTP или форматом файла cookie Netscape / Mozilla. ПРИМЕЧАНИЕ: файл, указанный как -b / —cookie , используется только как входной. Файлы cookie не будут храниться в файле. Для хранения файлов cookie используйте параметр -c / —cookie-jar , или вы можете сохранить заголовки HTTP в файл, используя -D / —dump-header . Если этот параметр установлен более одного раза, последний вхождение будет вариантом, который использовался. |
-B , —use-ascii | ( FTP / LDAP ) Включить передачу ASCII. Для FTP это также может быть выполнено с помощью URL-адреса, заканчивающегося на «; Type = A ». Эта опция приводит к тому, что данные, отправляемые на стандартный вывод, находятся в текстовом режиме для систем win32. Если этот параметр используется дважды, второй отключит использование ASCII. |
— базовый | ( HTTP ) Указывает curl использовать базовую аутентификацию HTTP. Это значение по умолчанию, и этот параметр обычно не имеет смысла, если вы не используете его для отмены ранее установленного параметра, который устанавливает другой метод аутентификации (например, —ntlm , —digest и —negotiate ). |
— шифров <список шифров> | ( SSL ) Определяет, какие шифры использовать в соединении.Перечисленные шифры должны быть действительными. Вы можете прочитать подробную информацию о списке шифров SSL на openssl.org. Шифры NSS выполняются иначе, чем OpenSSL и GnuTLS. Полный список шифров NSS находится в записи NSSCipherSuite по этому URL-адресу: https://pagure.io/mod_nss#Directives. Если этот параметр используется несколько раз, последний будет иметь приоритет над другими. |
— сжатый | ( HTTP ) Запросить сжатый ответ, используя один из алгоритмов, поддерживаемых curl , и вернуть несжатый документ.Если этот параметр используется и сервер отправляет неподдерживаемую кодировку, Curl сообщит об ошибке. |
— тайм-аут соединения <секунды> | Максимальное время в секундах, которое может занять соединение с сервером. Это ограничивает только фазу подключения; после подключения curl эта опция больше не применяется. Начиная с 7.32.0, этот параметр принимает десятичные значения, но фактическое время ожидания будет уменьшаться в точности, поскольку указанное время ожидания увеличивается в десятичной точности.См. Также опцию -m / —max-time . Если эта опция используется несколько раз, будет использован последний. |
-c , —cookie-jar <имя файла> | ( HTTP ) Укажите, в какой файл вы хотите, чтобы curl записывал все файлы cookie после завершения операции. Curl записывает все файлы cookie, ранее считанные из указанного файла, а также все файлы cookie, полученные с удаленного сервера (ов).Если файлы cookie не известны, файл не будет записан. Файл будет записан с использованием формата файлов cookie Netscape. Если вы установите для имени файла одно тире (« — »), файлы cookie будут записаны в стандартный вывод. Этот параметр командной строки активирует механизм cookie, который заставляет curl записывать и использовать файлы cookie. Другой способ активировать его — использовать параметр -b / —cookie . ПРИМЕЧАНИЕ: Если невозможно создать или записать файл cookie, вся операция curl не завершится ошибкой или даже не сообщит об ошибке.Если указано -v , будет отображено предупреждение, но это единственная видимая обратная связь, которую вы получите об этой возможно фатальной ситуации. Если эта опция используется несколько раз, будет использоваться последнее указанное имя файла. |
-C , —продолжить-на <смещение> | Продолжить / возобновить предыдущую передачу файла с заданным смещением . Данное смещение — это точное количество байтов, которое будет пропущено, отсчитываемое от начала исходного файла до его передачи в место назначения.Если используется с загрузкой, команда SIZE ftp-сервера не будет использоваться curl. Используйте « -C — », чтобы указать curl, чтобы он автоматически определял, где и как возобновить передачу. Затем он использует данные файлы вывода / ввода, чтобы выяснить это. Если эта опция используется несколько раз, будет использован последний. |
—create-dirs | При использовании вместе с опцией -o , curl создает необходимую иерархию локальных каталогов по мере необходимости.Эта опция создает каталоги, упомянутые с опцией -o , ничего больше. Если имя файла -o не использует каталог или упомянутые в нем каталоги уже существуют, каталоги не будут созданы. Чтобы создать удаленные каталоги при использовании FTP или SFTP, попробуйте —ftp-create-dirs . |
—crlf | ( FTP ) Преобразование LF в CRLF при загрузке. Полезно для MVS (OS / 390). |
—crlfile <файл> | ( HTTPS / FTPS ) Предоставляет файл в формате PEM со списком отозванных сертификатов, который может указывать сертификаты одноранговых узлов, которые должны считаться отозванными. Если эта опция используется несколько раз, будет использован последний. (добавлено в 7.19.7) |
-d , —data | ( HTTP ) Отправляет указанные данные в запросе POST на HTTP-сервер способом, который может имитировать, как если бы пользователь заполнил HTML-форму и нажал кнопку отправки.Обратите внимание, что данные отправляются точно так, как указано, без дополнительной обработки (с обрезанными символами новой строки). Ожидается, что данные будут «закодированы по URL». Это заставит curl передать данные на сервер с использованием типа содержимого application / x-www-form-urlencoded . Сравните с -F / —form . Если этот параметр используется более одного раза в одной командной строке, указанные фрагменты данных будут объединены вместе с разделительным символом « и ». Таким образом, использование ‘-d name = daniel -d skill = lousy’ сгенерирует блок POST, который выглядит как ‘name = daniel & skill = lousy’ . Если вы начинаете данные с символа « @ », оставшаяся часть должна быть именем файла, из которого будут считываться данные, или « — » (тире), если вы хотите, чтобы curl считывал данные из стандартного ввода. Содержимое файла уже должно быть закодировано по URL. Также можно указать несколько файлов. Таким образом, отправка данных из файла с именем ‘foobar’ будет выполняться с помощью « —data @ foo-bar ». -d / —data совпадает с —data-ascii . Чтобы опубликовать данные в чисто двоичном формате, вы должны вместо этого использовать параметр —data-binary .Чтобы URL-кодировать значение поля формы, вы можете использовать —data-urlencode . Если этот параметр используется несколько раз, данные, следующие за первым, будут добавлены. |
—data-ascii <данные> | ( HTTP ) Это псевдоним для опции -d / —data . Если этот параметр используется несколько раз, данные, следующие за первым, будут добавлены. |
— двоичные данные <данные> | ( HTTP ) Публикует данные точно так, как указано, без какой-либо дополнительной обработки. Если вы начинаете данные с символа @ , остальные должны быть именем файла. Данные отправляются аналогично тому, как это делает —data-ascii , за исключением того, что символы новой строки сохраняются, а преобразования никогда не выполняются. Если эта опция используется несколько раз, те, которые следуют за первой, будут добавлять данные, как описано в -d , —data . |
—data-urlencode <данные> | ( HTTP ) Публикует данные, аналогично другим параметрам —data, за исключением того, что выполняется кодирование URL.(Добавлено в 7.18.0) Чтобы быть CGI-совместимой, часть <данные> должна начинаться с имени, за которым следует разделитель и спецификация содержимого. Часть может быть передана в curl , используя один из следующих синтаксисов: содержание Это заставит curl URL-кодировать контент и передать его дальше. Просто будьте осторожны, чтобы содержимое не содержало символов = или @ , так как это приведет к совпадению синтаксиса с одним из других случаев ниже! = содержание Это заставит curl URL-кодировать контент и передать его дальше.Предыдущий символ = не включается в данные. имя = содержание Это заставит curl URL-кодировать часть содержимого и передать ее дальше. Обратите внимание, что часть имени уже должна быть закодирована в URL. @ имя файла Это заставит curl загружать данные из данного файла (включая любые символы новой строки), кодировать эти данные по URL и передавать их в POST. [адрес электронной почты защищен] Это заставит curl загружать данные из данного файла (включая любые символы новой строки), кодировать эти данные по URL и передавать их в POST.К части имени добавляется знак равенства, в результате получается name = urlencoded-file-content . Обратите внимание, что имя, как ожидается, уже будет закодировано в URL-адресе. |
— делегирование УРОВЕНЬ | Установите УРОВЕНЬ , чтобы сообщить серверу, что ему разрешено делегировать, когда речь идет об учетных данных пользователя. Используется с GSS / kerberos. нет Не разрешать делегирование. политика Делегирует, если и только если в билете службы Kerberos установлен флаг OK-AS-DELEGATE, что является вопросом политики области. всегда Безоговорочно разрешить серверу делегирование. |
— дайджест | ( HTTP ) Включает дайджест-аутентификацию HTTP. Это проверка подлинности, которая предотвращает отправку пароля в виде открытого текста. Используйте это в сочетании с обычной опцией -u / —user для установки имени пользователя и пароля. Смотрите также —ntlm , —negotiate и —anyauth , чтобы узнать о связанных опциях. Если этот параметр используется несколько раз, следующие случаи не имеют значения. |
—disable-eprt | ( FTP ) Укажите curl , чтобы отключить использование команд EPRT и LPRT при выполнении активных FTP-передач. Обычно Curl всегда сначала пытается использовать EPRT, а затем LPRT перед использованием PORT, но с этой опцией он сразу же будет использовать PORT. EPRT и LPRT являются расширениями исходного протокола FTP, могут работать не на всех серверах, но обеспечивают большую функциональность лучше, чем традиционная команда PORT. —eprt можно использовать для повторного явного включения EPRT, а —no-eprt является псевдонимом для —disable-eprt . Отключение EPRT изменяет только активное поведение. Если вы хотите переключиться в пассивный режим, вам не нужно использовать -P , —ftp-port или принудительно использовать —ftp-p |
.
PHP + curl, пример кода HTTP POST?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
linux — выполнение HTTP-запросов с помощью cURL (с использованием PROXY)
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.