10 Utilizarea comenzii cURL cu exemplu în timp real

Explorarea comenzii cURL: Un ghid detaliat pentru depanare web

cURL reprezintă un instrument de linie de comandă extrem de versatil, conceput pentru a prelua sau a transmite date folosind sintaxa URL. Acesta este un utilitar esențial pentru orice dezvoltator sau specialist în suport tehnic care se ocupă cu depanarea aplicațiilor web.

Datorită caracterului său multiplatformă, cURL poate fi utilizat cu ușurință pe sistemele Windows, macOS și UNIX, oferind o soluție consistentă indiferent de sistemul de operare.

Mai jos, vom analiza câteva dintre cele mai frecvent utilizate sintaxe cURL, însoțite de exemple practice pentru a facilita înțelegerea și utilizarea lor.

Verificarea conectivității la o adresă URL

Înainte de a începe depanarea oricărei aplicații web, este esențial să verificăm dacă putem accesa adresa URL externă. Pe un sistem UNIX, comanda cURL este ideală pentru acest scop.

Comanda de bază este simplă:

curl yoururl.com

În mod normal, această comandă nu va genera nicio ieșire vizibilă. Cu toate acestea, dacă serverul nu este accesibil, veți primi mesaje de eroare, precum „gazda nu a putut fi rezolvată”.


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

Salvarea conținutului URL într-un fișier

Dacă doriți să stocați conținutul unei adrese URL sau URI într-un fișier specific, puteți utiliza următoarea sintaxă:

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

Exemplu:


[[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]#

Acest exemplu va descărca tot conținutul de pe gf.dev și îl va salva în fișierul `/tmp/gf.html`.

Vizualizarea antetelor de solicitare și răspuns

Pentru a depana eficient, este util să examinați antetele de cerere și răspuns trimise și primite de server. Pentru aceasta, folosiți comanda cURL cu parametrul `-v`:

curl -v yoururl.com

Exemplu concret:


[[email protected] tmp]# curl -v https://tipstrick.ro.com
* About to connect() to tipstrick.ro.com port 443 (#0)
*   Trying 104.25.134.107...
* Connected to tipstrick.ro.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: tipstrick.ro.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=.tipstrick.ro.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://tipstrick.ro.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://tipstrick.ro.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
<

Descărcarea cu limită de viteză

Atunci când evaluați performanța unei aplicații web, este util să puteți controla viteza de descărcare a fișierelor. Cu cURL, acest lucru este posibil:

curl --limit-rate 2000B yoururl.com

Exemplu:

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

Conectarea prin intermediul unui proxy

Într-un mediu DMZ, utilizarea unui proxy pentru a accesa internetul este frecventă. Iată cum puteți realiza acest lucru cu cURL:

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

Puteți utiliza, de asemenea, cURL pentru a trimite antete specifice în timpul solicitărilor. De exemplu, pentru a specifica `Content-Type`, folosiți comanda:

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

Pentru a obține rapid antetul răspunsului, utilizați comanda:

curl --head http://yoururl.com

Exemplu concret:


[[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]#

Conectarea la o adresă HTTPS și ignorarea erorilor de certificat SSL

Atunci când accesați o adresă URL securizată, este posibil să întâmpinați erori de certificat SSL. Pentru a le ignora, folosiți parametrul `–insecure`:

curl --insecure https://yoururl.com

Utilizarea unui protocol specific (SSL/TLS)

Pentru a testa compatibilitatea cu anumite protocoale SSL/TLS, puteți utiliza cURL specificând versiunea dorită:

Conectarea folosind SSL v3:

curl --sslv3 https://yoururl.com

Conectarea folosind diferite versiuni 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

Descărcarea fișierelor de pe un server FTP

cURL poate fi utilizat și pentru a descărca fișiere de pe servere FTP, specificând numele de utilizator și parola:

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

Amintiți-vă că puteți combina parametrul `-v` (mod verbose) cu orice sintaxă pentru a obține informații suplimentare despre operațiune.

Parametrul `Host` este esențial pentru testarea adreselor URL țintă folosind IP, în special atunci când conținutul este disponibil numai când antetul `Host` se potrivește. Acest lucru este util și pentru a testa aplicații folosind adrese IP/URL de echilibrare a încărcării.

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

Utilizarea cURL online

Dacă preferați, puteți utiliza cURL prin intermediul unor instrumente online, care permit execuția comenzilor cURL de la distanță.

Online CURL este un instrument simplu care vă permite să executați cURL online, oferind opțiuni precum:

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

Un alt instrument util este generatorul de linie de comandă cURL, care vă permite să construiți comenzi cURL printr-o interfață vizuală. Acesta afișează comanda cURL generată în funcție de parametrii introduși.

cURL este un instrument puternic pentru depanarea problemelor de conectivitate în timp real. Sperăm că acest ghid detaliat vă va fi util. Pentru a aprofunda cunoștințele despre linia de comandă Linux, vă recomandăm cursul online Noțiuni de bază pentru linia de comandă Linux.