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_page
 
2

Я прошел через это, когда пытался получить 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
 
  1. Я отправил myfile.csr третьей стороне, чтобы он был подписан
  2. стороннее приложение подписало и отправило мне serverfile.pem

Используя эти файлы, я смогу вызвать веб-службу REST с помощью команды curl. Я попробовал приведенную ниже команду, но она вернула несанкционированную ошибку

 curl --cacert . /serverfile.pem --key ./myfile-pr.key --cert ./myfile.csr --pass <пароль> https://serverpost :порт/getEmployeeInfo
 
  • веб-сервисы
  • ssl
  • curl
  • tls1.2
14

--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 , чтобы убедиться, что он содержит только сертификат клиента, а не цепочку сертификатов сторонних центров сертификации.

1

… 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.