10 Използване на команда cURL с пример в реално време

cURL е инструмент от командния ред за получаване или изпращане на данни чрез синтаксис на URL.

Ако работите като разработчик или във функцията за поддръжка, трябва да сте наясно с използването на команда cURL за отстраняване на проблеми с уеб приложения. cURL е помощна програма за различни платформи, което означава, че можете да използвате на Windows, MAC и UNIX.

По-долу са някои от най-използваните синтаксиси с пример, който да ви помогне.

Проверете дали можете да се свържете с URL адреса

Ако работите на UNIX система и се опитвате да свържете външния URL адрес, първото нещо, което искате да направите, е да проверите дали имате достъп до URL адреса чрез curl.

curl yoururl.com

Няма да хвърли никакъв изход. Въпреки това, ако сървърът не може да се свърже, тогава ще получите грешки като не може да разреши хоста.

[[email protected] tmp]# curl helloitdoesntexist.com
curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error
[[email protected] tmp]#

Запазете URL/URI изхода във файл

Ако трябва да запишете съдържанието на URL или URI в конкретен файл, можете да използвате следния синтаксис

curl https://yoururl.com > yoururl.html

пр.:

[[email protected] tmp]# curl https://gf.dev > /tmp/gfhtml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18557    0 18557    0     0  72565      0 --:--:-- --:--:-- --:--:-- 72772
[[email protected] tmp]#

Горният пример ще запази цялото съдържание от gf.dev в /tmp/gf.html

  Топ 25 най-добри безплатни алтернативи на Snagit

Показване на заглавката на заявката и отговора

Ако имате проблеми и искате да потвърдите, получавате очакваната заглавка на заявката и отговора.

curl -v yoururl.com

Пример:

[[email protected] tmp]# curl -v https://pctechbg.net.com
* About to connect() to pctechbg.net.com port 443 (#0)
*   Trying 104.25.134.107...
* Connected to pctechbg.net.com (104.25.134.107) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* 	subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated
* 	start date: Nov 07 00:00:00 2019 GMT
* 	expire date: May 15 23:59:59 2020 GMT
* 	common name: ssl371609.cloudflaressl.com
* 	issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: pctechbg.net.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sat, 09 Nov 2019 19:41:37 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.pctechbg.net.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://pctechbg.net.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://pctechbg.net.com/>; rel=shortlink
< X-SRCache-Fetch-Status: HIT
< X-SRCache-Store-Status: BYPASS
< X-Frame-Options: SAMEORIGIN
< X-Powered-By: EasyEngine v4.0.12
< Via: 1.1 google
< CF-Cache-Status: DYNAMIC
< Strict-Transport-Security: max-age=15552000; preload
< X-Content-Type-Options: nosniff
< Alt-Svc: h3-23=":443"; ma=86400
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 533243e4bcd4bbf4-LHR
<

Изтеглете с ограничена скорост

Ако работите върху оптимизация и искате да видите колко време отнема изтеглянето при определена скорост, можете: –

curl –-limit-rate 2000B

Пример:

curl –-limit-rate 2000B https://gf.dev

Използване на прокси за свързване

Много удобно, ако работите на DMZ сървъра, където трябва да се свържете с външния свят чрез прокси.

curl --proxy yourproxy:port https://yoururl.com

Можете да използвате curl, като вмъкнете заглавка с вашите данни, за да тествате или отстраните конкретния проблем. Нека да видим следния пример за заявка с Content-Type.

curl --header 'Content-Type: application/json' http://yoururl.com

Правейки по-горе, вие молите curl да предаде Content-Type като application/json в заглавката на заявката.

  Защо приложенията изчезват от App Store и Play Store?

Ако правите някакво отстраняване на неизправности и бързо искате да проверите заглавката на отговора, можете да използвате следния синтаксис.

curl --head http://yoururl.com

Пример:

[[email protected] tmp]# curl --head https://chandan.io
HTTP/1.1 200 OK
Date: Sat, 09 Nov 2019 19:51:23 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly
X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA
Expires: Sat, 09 Nov 2019 20:51:23 GMT
Cache-Control: public, max-age=3600
Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT
x-goog-generation: 1533552347482034
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 24620
x-goog-hash: crc32c=DpDPAQ==
x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA==
x-goog-storage-class: MULTI_REGIONAL
Accept-Ranges: bytes
CF-Cache-Status: DYNAMIC
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 53325234dc2fbb9a-LHR

[[email protected] tmp]#

Свържете HTTPS/SSL URL и игнорирайте всяка грешка в SSL сертификата

Когато се опитате да получите достъп до URL адрес, защитен със сертификат SSL/TLS и ако има грешен сертификат или CN не съвпада, тогава ще получите следната грешка.

curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

Добри новини, можете да инструктирате cURL да игнорира грешката в сертификата с –insecure флаг.

curl --insecure https://yoururl.com

Свързване чрез специфичен протокол (SSL/TLS)

Много удобно за тестване дали конкретен URL адрес може да се ръкостиска по конкретен SSL/TLS протокол.

  Как да вмъкнете електронна таблица на Google Sheets в Google Docs

За свързване чрез SSL v3

curl --sslv3 https://yoururl.com

и за различни TLS версии

curl --tlsv1 https://example.com
curl --tlsv1.0 https://example.com
curl --tlsv1.1 https://example.com
curl --tlsv1.2 https://example.com
curl --tlsv1.3 https://example.com

Изтеглете файл от FTP сървър

Можете да използвате curl и за изтегляне на файла, като посочите потребителското си име и парола.

curl -u user:password -O ftp://ftpurl/style.css

Винаги можете да използвате „-v“ с произволен синтаксис, за да печатате в подробен режим.

Заглавката на хоста е полезна за тестване на целевия URL през IP, когато исканото съдържание е достъпно само когато заглавката на хоста съвпада. Или, ако искате да тествате приложението, като използвате IP/URL адрес за балансиране на натоварването.

curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/

Какво ще кажете за използването на cURL онлайн?

Да, това е възможно със следните инструменти. Можете да изпълните cURL дистанционно.

Онлайн CURL – лек инструмент за извличане на URL адреса онлайн и възможност за добавяне на следните опции.

--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
 

cURL конструктор на командния ред – този е различен. Помага ви да създадете командата curl, където можете да въвеждате информация в приятен потребителски интерфейс, а в долната част ще получите командата cURL.

cURL е полезна помощна програма за отстраняване на проблем с връзката в реално време и се надявам, че горното ще ви помогне. Ако искате да научите повече, бих препоръчал Основи на командния ред на Linux онлайн курс.