cURL je alatka komandne linije koja se koristi za preuzimanje ili slanje podataka putem URL sintakse.
Za programere i tehničku podršku, razumevanje i korišćenje cURL komande je ključno za rešavanje problema sa web aplikacijama. cURL je višeplatformski uslužni program, što znači da ga možete koristiti na Windows, macOS i UNIX sistemima.
U nastavku su navedene neke od najčešćih sintaksi, zajedno sa primerima koji će vam pomoći da ih savladate.
Provera konekcije sa URL-om
Ako radite na UNIX sistemu i želite da proverite vezu sa spoljnim URL-om, prvi korak je testiranje pristupa pomoću cURL-a.
Komanda izgleda ovako: curl vasurl.com
U slučaju uspešne konekcije, nećete dobiti nikakav izlaz. Međutim, ako server nije dostupan, dobićete poruku o grešci, na primer, „nije uspelo rešavanje hosta“.
[[email protected] tmp]# curl helloitdoesntexist.com
curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error
[[email protected] tmp]#
Čuvanje izlaza URL-a/URI-ja u datoteku
Za čuvanje sadržaja URL-a ili URI-ja u određenu datoteku, koristite sledeću sintaksu:
curl https://vasurl.com > vasurl.html
Primer:
[[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]#
Ovaj primer će sačuvati kompletan sadržaj sajta gf.dev u datoteku /tmp/gf.html.
Prikazivanje zaglavlja zahteva i odgovora
Ako imate poteškoća i želite da proverite zaglavlja zahteva i odgovora, koristite ovu komandu:
curl -v vasurl.com
Primer:
[[email protected] tmp]# curl -v https://techblog.co.rs.com
* About to connect() to techblog.co.rs.com port 443 (#0)
* Trying 104.25.134.107...
* Connected to techblog.co.rs.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: techblog.co.rs.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=.techblog.co.rs.com; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://techblog.co.rs.com/wp-json/>; rel="https://api.w.org/"
< Link: <https://techblog.co.rs.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
<
Preuzimanje sa ograničenom brzinom
Ako želite da testirate vreme preuzimanja pri određenoj brzini, možete koristiti ovu opciju:
curl --limit-rate 2000B
Na primer:
curl --limit-rate 2000B https://gf.dev
Korišćenje proksija za povezivanje
Ovo je korisno kada radite na serveru u DMZ okruženju, gde je za pristup internetu potreban proksi:
curl --proxy vasproksi:port https://vasurl.com
Možete koristiti cURL za slanje zaglavlja sa podacima za testiranje ili rešavanje problema. Pogledajte sledeći primer sa zaglavljem Content-Type:
curl --header 'Content-Type: application/json' http://vasurl.com
Ovom komandom se postavlja zaglavlje Content-Type na application/json.
Za brzo proveravanje zaglavlja odgovora koristite ovu sintaksu:
curl --head http://vasurl.com
Primer:
[[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]#
Povezivanje na HTTPS/SSL URL i ignorisanje SSL grešaka
Kada pokušate da pristupite zaštićenom URL-u sa SSL/TLS sertifikatom, a dođe do greške zbog neispravnog sertifikata ili nepodudaranja CN-a, dobićete sledeću grešku:
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Možete naložiti cURL-u da ignoriše greške sa sertifikatom koristeći zastavicu --insecure
.
curl --insecure https://vasurl.com
Povezivanje koristeći određeni protokol (SSL/TLS)
Ovo je korisno za testiranje da li određeni URL podržava određeni SSL/TLS protokol.
Za povezivanje pomoću SSL v3, koristite:
curl --sslv3 https://vasurl.com
A za različite verzije TLS-a:
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
Preuzimanje datoteke sa FTP servera
cURL se može koristiti i za preuzimanje datoteka sa FTP servera, uz navođenje korisničkog imena i lozinke.
curl -u korisnik:lozinka -O ftp://ftpurl/stil.css
Možete koristiti -v
sa bilo kojom sintaksom za prikazivanje detaljnih informacija.
Zaglavlje hosta je korisno za testiranje ciljne URL adrese putem IP adrese kada je sadržaj dostupan samo ako se zaglavlje hosta podudara. Takođe je korisno za testiranje aplikacija koristeći IP/URL balansere opterećenja.
curl --header 'Host: ciljnaaplikacija.com' https://192.0.0.1:8080/
Kako koristiti cURL online?
Da, to je moguće pomoću sledećih alata. Možete izvršavati cURL komande na daljinu.
Online cURL – lagan alat za preuzimanje URL-ova online uz mogućnost dodavanja sledećih opcija:
--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
cURL Builder – ovaj alat je drugačiji. Omogućava vam da kreirate cURL komandu u prijatnom korisničkom okruženju, a zatim dobijete odgovarajuću cURL komandu na dnu stranice.
cURL je koristan uslužni program za rešavanje problema sa povezivanjem u realnom vremenu, nadam se da će vam ove informacije biti korisne. Za više informacija, preporučujem online kurs Osnove Linux komandne linije.