10 cURL Kommandoanvändning med realtidsexempel

cURL är ett kommandoradsverktyg för att hämta eller skicka data med URL-syntax.

Om du arbetar som utvecklare eller i supportfunktionen måste du vara medveten om cURL-kommandoanvändning för att felsöka webbapplikationer. cURL är ett plattformsoberoende verktyg som innebär att du kan använda på Windows, MAC och UNIX.

Följande är några av de mest använda syntaxerna med ett exempel som hjälper dig.

Kontrollera om du kan ansluta till URL:en

Om du arbetar på ett UNIX-system och försöker ansluta den externa URL:en är det första du vill göra att kontrollera om du kan komma åt URL:en via curl.

curl yoururl.com

Det kommer inte att ge någon utgång. Men om servern inte kan ansluta, kommer du att få fel som inte kunde lösa värden.

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

Spara URL/URI-utdata i filen

Om du måste spara URL- eller URI-innehållet till en specifik fil kan du använda följande syntax

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

ex:

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

Ovanstående exempel kommer att spara allt innehåll från gf.dev till /tmp/gf.html

Visa förfrågan och svarshuvud

Om du har problem och vill validera får du den förväntade förfrågan och svarshuvudet.

curl -v yoururl.com

Ex:

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

Ladda ner till en gränshastighet

Om du arbetar med optimering och vill se hur mycket tid det tar att ladda ner med en viss hastighet, kan du:-

curl –-limit-rate 2000B

Ex:

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

Använda en proxy för att ansluta

Mycket praktiskt om du arbetar på DMZ-servern där du behöver ansluta till den yttre världen med en proxy.

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

Du kan använda curl genom att infoga en rubrik med dina data för att testa eller felsöka det specifika problemet. Låt oss se följande exempel för att begära med Content-Type.

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

Genom att göra ovan ber du curl att skicka Content-Type som application/json i förfrågningshuvudet.

Om du gör lite felsökning och snabbt vill kontrollera svarshuvudet kan du använda följande syntax.

curl --head http://yoururl.com

Ex:

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

Anslut HTTPS/SSL URL och ignorera eventuella SSL-certifikatfel

När du försöker komma åt SSL/TLS-certifierad URL och om det har fel certifikat eller CN inte matchar, får du följande fel.

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

Goda nyheter, du kan instruera cURL att ignorera certifikatfelet med –insecure flagga.

curl --insecure https://yoururl.com

Anslut med ett specifikt protokoll (SSL/TLS)

Mycket praktiskt att testa om en viss URL kan handskaka över ett specifikt SSL/TLS-protokoll.

För att ansluta med SSL v3

curl --sslv3 https://yoururl.com

och för olika TLS-versioner

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

Ladda ner filen från FTP-servern

Du kan använda curl för att ladda ner filen också genom att ange ditt användarnamn och lösenord.

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

Du kan alltid använda ”-v” med valfri syntax för att skriva ut i detaljerat läge.

Värdhuvudet är användbart för att testa måladressen över IP när det begärda innehållet endast är tillgängligt när värdhuvudet matchar. Eller om du vill testa applikationen med IP/URL för lastbalanserare.

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

Vad sägs om att använda cURL online?

Ja, det är möjligt med följande verktyg. Du kan köra cURL på distans.

Online CURL – ett lättviktigt verktyg för att hämta webbadressen online och möjligheten att lägga till följande alternativ.

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

cURL kommandoradsbyggare – den här är annorlunda. Det hjälper dig att bygga curl-kommandot där du kan ange information i snyggt UI, och längst ner kommer du att få kommandot cURL.

cURL är ett användbart verktyg för att felsöka ett anslutningsproblem i realtid, och jag hoppas att ovanstående hjälper dig. Om du vill lära dig mer, skulle jag rekommendera Grundläggande om Linux Kommandorad onlinekurs.