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.