11 примеров использование команд cURL в режиме реального времени
0 ∞cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.
Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL — кроссплатформенная утилита для Windows, MAC и UNIX.
Ниже приведены некоторые часто используемые примеры синтаксиса.
- Проверка возможности подключения к URL-адресу
- Сохранение вывод URL / URI в файл
- Показать заголовок запроса и ответа
- Загрузить с предельной скоростью
- Использование прокси для подключения
- Проверка URL-адресас введением заголовка
- Добавить дополнительный заголовок
- Открыть только заголовок ответа
- Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата
- Подключиться с использованием определенного протокола (SSL / TLS)
- Загрузить файл с FTP-сервера
- Использования cURL онлайн
Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl. Для этого используйте следующую команду:
# curl yoururl.com
Если нужно сохранить содержимое URL или URI в конкретном файле, используйте следующий синтаксис:
# curl yoururl.com > yoururl.html
Например:
[root@localhost]# curl 74.125.68.100 >/tmp/google.html
Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html.
Если хотите удостовериться, что получаете ожидаемый заголовок запроса и ответа, используйте следующую команду:
# curl -v yoururl.com
например:
[root@localhost ]# curl -v 74.125.68.100 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* >< HTTP/1.1 200 OK <Date: Sun, 18 Jan 2015 06:02:58 GMT <Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: NID=67=EZH_o3sPvCSnxzVatz21OHv_; expires=Mon, 20-Jul-2015 06:02:58 GMT; path=/; domain=.; HttpOnly < P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN <Alternate-Protocol: 80:quic,p=0.02 <Accept-Ranges: none <Vary: Accept-Encoding <Transfer-Encoding: chunked
Если нужно узнать, сколько времени требуется для загрузки с определенной скоростью, то используйте следующую команду:
# curl –-limit-rate 2000B
например:
# curl –-limit-rate 2000B 74.125.68.100
Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:
# curl --proxyyourproxy:port http://yoururl.com
Для устранения конкретной проблемы можно использовать Curl, чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:
# curl --header 'Content-Type: application/json' http://yoururl.com
Мы просим curl передать Content-Type в качестве application / json в заголовок запроса.
Вы можете добавить заголовок к запросу с помощью синтаксиса — header.
# curl –-header “X-CustomHeader: GeekFlare” http://yoururl.com
например:
[root@localhost]# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK <Date: Sun, 18 Jan 2015 08:30:25 GMT <Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: NID=67=CkzDX-zTtWA0d9M1QVG4O3Im; expires=Mon, 20-Jul-2015 08:30:25 GMT; path=/; domain=.; HttpOnly < P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN <Alternate-Protocol: 80:quic,p=0.02 <Accept-Ranges: none <Vary: Accept-Encoding <Transfer-Encoding: chunked
Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.
# curl --head http://yoururl.com
Пример:
[root@localhost]# curl -I 74.125.68.100 HTTP/1.1 200 OK Date: Sun, 18 Jan 2015 08:31:22 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=Mon, 20-Jul-2015 08:31:22 GMT; path=/; domain=.; HttpOnly P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding [root@localhost ]#
Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.
curl --insecure https://yoururl.com
Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS,используйте следующий синтаксис.
Для подключения с использованием SSLV2:
# curl --sslv2 https://yoururl.com
Для подключения с использованием SSLV3:
# curl --sslv3 https://yoururl.com
Для подключения через TLS:
# curl --tlsv1 https://yoururl.com
С помощью cURL можно загрузить файл с ftp-сервера, указав имя пользователя и пароль.
# curl -u user:password -O ftp://ftpurl/style.css
Всегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.
Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
Online CURL — компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.
--connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent
Пример вывода:
cURL command line builder–позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.
cURL — полезная утилита для устранения проблем с подключением в режиме реального времени.
Вадим Дворниковавтор-переводчик статьи «11 cURL Command Usage with Real-Time Example»
Пожалуйста, опубликуйте ваши отзывы по текущей теме статьи. За комментарии, подписки, отклики, лайки, дизлайки низкий вам поклон!
11 примеров использование команд cURL в режиме реального времени
0 ∞cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.
Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL — кроссплатформенная утилита для Windows, MAC и UNIX.
- Проверка возможности подключения к URL-адресу
- Сохранение вывод URL / URI в файл
- Показать заголовок запроса и ответа
- Загрузить с предельной скоростью
- Использование прокси для подключения
- Проверка URL-адресас введением заголовка
- Добавить дополнительный заголовок
- Открыть только заголовок ответа
- Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата
- Подключиться с использованием определенного протокола (SSL / TLS)
- Загрузить файл с FTP-сервера
- Использования cURL онлайн
Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl. Для этого используйте следующую команду:
# curl yoururl.com
Если нужно сохранить содержимое URL или URI в конкретном файле, используйте следующий синтаксис:
# curl yoururl.com > yoururl.html
Например:
[root@localhost]# curl 74.125.68.100 >/tmp/google.html
Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html.
Если хотите удостовериться, что получаете ожидаемый заголовок запроса и ответа, используйте следующую команду:
# curl -v yoururl.com
например:
[root@localhost ]# curl -v 74.125.68.100 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* >< HTTP/1.1 200 OK <Date: Sun, 18 Jan 2015 06:02:58 GMT <Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: NID=67=EZH_o3sPvCSnxzVatz21OHv_; expires=Mon, 20-Jul-2015 06:02:58 GMT; path=/; domain=. ; HttpOnly < P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN <Alternate-Protocol: 80:quic,p=0.02 <Accept-Ranges: none <Vary: Accept-Encoding <Transfer-Encoding: chunked
Если нужно узнать, сколько времени требуется для загрузки с определенной скоростью, то используйте следующую команду:
# curl –-limit-rate 2000B
например:
# curl –-limit-rate 2000B 74.125.68.100
Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:
# curl --proxyyourproxy:port http://yoururl.com
Для устранения конкретной проблемы можно использовать Curl, чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:
# curl --header 'Content-Type: application/json' http://yoururl.com
Мы просим curl передать Content-Type в качестве application / json в заголовок запроса.
Вы можете добавить заголовок к запросу с помощью синтаксиса — header.
# curl –-header “X-CustomHeader: GeekFlare” http://yoururl.com
например:
[root@localhost]# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK <Date: Sun, 18 Jan 2015 08:30:25 GMT <Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: NID=67=CkzDX-zTtWA0d9M1QVG4O3Im; expires=Mon, 20-Jul-2015 08:30:25 GMT; path=/; domain=.; HttpOnly < P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN <Alternate-Protocol: 80:quic,p=0. 02 <Accept-Ranges: none <Vary: Accept-Encoding <Transfer-Encoding: chunked
Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.
# curl --head http://yoururl.com
Пример:
[root@localhost]# curl -I 74.125.68.100 HTTP/1.1 200 OK Date: Sun, 18 Jan 2015 08:31:22 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=Mon, 20-Jul-2015 08:31:22 GMT; path=/; domain=.; HttpOnly P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding [root@localhost ]#
Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.
curl --insecure https://yoururl.com
Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS,используйте следующий синтаксис.
Для подключения с использованием SSLV2:
# curl --sslv2 https://yoururl.com
Для подключения с использованием SSLV3:
# curl --sslv3 https://yoururl.com
Для подключения через TLS:
# curl --tlsv1 https://yoururl.com
С помощью cURL можно загрузить файл с ftp-сервера, указав имя пользователя и пароль.
# curl -u user:password -O ftp://ftpurl/style.css
Всегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.
Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
Online CURL — компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.
--connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent
Пример вывода:
cURL command line builder–позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.
cURL — полезная утилита для устранения проблем с подключением в режиме реального времени.
Вадим Дворниковавтор-переводчик статьи «11 cURL Command Usage with Real-Time Example»
Пожалуйста, опубликуйте ваши отзывы по текущей теме статьи. За комментарии, подписки, отклики, лайки, дизлайки низкий вам поклон!
java — CURL для передачи SSL-сертификата и пароля
спросил
Изменено 5 лет, 11 месяцев назад
Просмотрено 176 тысяч раз
Мне нужно указать сертификат с помощью CURL. Я пробовал с параметром —cert, но он не работает.
Не могли бы вы указать мне хранилище ключей и пароль при вызове с помощью curl?
- java
- unix
- curl
- фигурные скобки
Должно быть:
curl --cert certificate_file. pem:password https://www.example.com/some_protect ed_page2
Я прошел через это, когда пытался получить clientcert и закрытый ключ из хранилища ключей.
Ссылка выше, размещенная welsh, была отличной, но в моем дистрибутиве RedHat был дополнительный шаг. Если curl собран с помощью NSS (выполнить curl --version
, чтобы увидеть, видите ли вы NSS в списке), тогда вам нужно импортировать ключи в хранилище ключей NSS. Я прошел через кучу запутанных шагов, так что это может быть не самый чистый способ, но все заработало
Так что экспортируйте ключи в .p12
keytool -importkeystore -srckeystore $jksfile -destkeystore $p12file \ -srcstoretype JKS -deststoretype PKCS12 \ -srcstorepass $jkspassword -deststorepass $p12password -srcalias $myalias -destalias $myalias \ -srckeypass $keypass -destkeypass $keypass -noprompt
И создайте файл pem, который содержит только ключ
создание эха ${fileroot}. key.pem openssl pkcs12 -in $p12 -out ${fileroot}.key.pem \ -пароль:$p12пароль \ -passout pass:$p12password -nocerts
- Сделать пустое хранилище ключей:
мкдир ~/nss chmod 700 ~/nss certutil -N -d ~/nss
- Импорт ключей в хранилище ключей
pks12util -i.p12 -d ~/nss -W <пароль для сертификата>
Теперь curl должен работать.
curl --insecure --cert <псевдоним сертификата клиента>:<пароль для сертификата> \ --key ${fileroot}.key.pem
Как я уже упоминал, могут быть и другие способы сделать это, но, по крайней мере, для меня это было воспроизводимо. Если curl скомпилирован с поддержкой NSS, мне не удалось заставить его вытащить сертификат клиента из файла.
1 В дополнение к предыдущему ответу убедитесь, что ваша установка curl поддерживает https.
Вы можете использовать curl --version
для получения информации о поддерживаемых протоколах.
Если ваш curl поддерживает https, следуйте предыдущему ответу.
curl —cert путь_сертификата:пароль https://www.example.com
Если он не поддерживает https, вам необходимо установить версию cURL, поддерживающую https.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаОбязательно, но не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
веб-сервисов — вызов взаимного двустороннего веб-сервиса SSL с использованием CURL
спросил
Изменено 2 года, 2 месяца назад
Просмотрено 2к раз
1) Я создал myfile.csr с помощью приведенной ниже команды
req -out myfile.csr -new -newkey rsa:2048 -nodes -keyout myfile-pr.key
- Я отправил myfile.csr третьей стороне, чтобы он был подписан
- стороннее приложение подписало и отправило мне serverfile.pem
Используя эти файлы, я смогу вызвать веб-службу REST с помощью команды curl. Я попробовал приведенную ниже команду, но она вернула несанкционированную ошибку
curl --cacert . /serverfile.pem --key ./myfile-pr.key --cert ./myfile.csr --pass <пароль> https://serverpost :порт/getEmployeeInfo
- веб-сервисы
- ssl
- curl
- tls1.2
--cacert
используется для указания файла с общедоступным сертификатом Центра сертификации (ЦС). Если вы установили сторонний сертификат CA в своей системе, этот параметр не нужен.
С помощью --cert
вы указываете подписанный сертификат клиента, который был выдан вам на основе вашего CSR. Из человека завиток
:
-E, —cert <сертификат[:пароль]>
Указывает curl использовать указанный файл сертификата клиента при получении файла с HTTPS, FTPS или другим протоколом на основе SSL. Сертификат должен быть в формате PKCS#12, если используется безопасный транспорт, или в формате PEM, если на любом другом движке. Если необязательный пароль не указан, он будет запрошен на терминале. Обратите внимание, что этот вариант предполагает файл «сертификата», который является закрытым ключом, и конкатенированный сертификат клиента. родной! См. -E, —cert и —key, чтобы указать их независимо.
В настоящее время вы передаете CSR (запрос на подпись сертификата) с помощью параметра --cert
. Ваша команда должна выглядеть примерно так:
curl --cacert ./3rd-party-ca-cert.pem --key ./myfile-pr.key --cert ./serverfile.pem --pass <пароль> https ://serverpost:порт/getEmployeeInfo
Как я уже упоминал, --cacert
может не понадобиться, если вы уже добавили этот ЦС (например, в Ubuntu https://superuser.com/a/719047).
Проверка serverfile.pem
, чтобы убедиться, что он содержит только сертификат клиента, а не цепочку сертификатов сторонних центров сертификации.
… schannel: отправка начальных данных рукопожатия: отправка ….
curl не поддерживает клиентские сертификаты в командной строке с SChannel. См. этот отчет об ошибке и это задание.
@SteffenUllrich: Извините, мне нужно было лучше отформатировать.
Проблема заключалась в том, что я пытался использовать curl в Windows (curl 7.55.1). Не уверен, что это проблема версии. Выполнил следующую команду в Linux, и она работает
openssl pkcs12 -export -out Combine.p12 -inkey client-cert-pr.key -in serverSelfSigned-cert.pem openssl pkcs12 -in comb.p12 -out ile.key.pem -nocerts -nodes openssl pkcs12 -in comb.p12 -out file.crt.pem -clcerts -nokeys curl -E ./file.crt.pem --key ./file.key.pem https:// ThirdPartyServer.com/employee
Примечания:
client-cert-pr.key: закрытый ключ клиента
serverselfsigned-cert.pem: самозаверяющий сертификат, отправленный третьей стороной
Следующие два других варианта также работают. Спасибо @bagljas
curl --cacert ./serverfile.pem --key ./myfile-pr.key --cert ./serverfile.pem --pass <пароль> https://serverpost:port/getEmployeeInfo curl --key ./myfile-pr.