cURL är ett kommandoradsbaserat verktyg som används för att överföra data med hjälp av URL-syntax.
För utvecklare och supportpersonal är det viktigt att känna till hur man använder cURL-kommandon för att felsöka webbapplikationer. cURL är plattformsoberoende, vilket innebär att det kan användas på Windows, macOS och Unix-baserade system.
Nedan följer några av de mest använda syntaxerna, tillsammans med exempel för att underlätta förståelsen.
Verifiera anslutning till en URL
När du arbetar på ett Unix-system och behöver ansluta till en extern URL, är det första steget att testa om URL:en är nåbar med cURL.
curl dinwebbadress.se
Detta kommando ger normalt ingen utdata. Om servern inte kan ansluta, visas ett felmeddelande som indikerar att värdnamnet inte kunde lösas.
[[email protected] tmp]# curl helloitdoesntexist.com curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error [[email protected] tmp]#
Spara utdata från URL/URI till fil
För att spara innehållet från en URL eller URI till en specifik fil, kan du använda följande syntax:
curl https://dinwebbadress.se > dinwebbadress.html
Exempel:
[[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]#
I exemplet ovan kommer allt innehåll från gf.dev att sparas i filen /tmp/gf.html.
Visa begäran och svarshuvuden
Om du felsöker och behöver granska både begäran och svarshuvuden kan du använda följande kommando:
curl -v dinwebbadress.se
Exempel:
[[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 ned med begränsad hastighet
När du jobbar med prestandaoptimering och vill simulera en nedladdning med en specifik hastighet, kan du använda följande:
curl --limit-rate 2000B
Exempel:
curl --limit-rate 2000B https://gf.dev
Använda en proxy för anslutning
Detta är särskilt användbart när du arbetar på en DMZ-server och behöver ansluta till internet via en proxy.
curl --proxy dinproxy:port https://dinwebbadress.se
Du kan även använda cURL för att inkludera specifika huvuden i din begäran, vilket är användbart för testning och felsökning. Nedan följer ett exempel som visar hur du begär med Content-Type.
curl --header 'Content-Type: application/json' http://dinwebbadress.se
Ovanstående kommando instruerar cURL att skicka ”Content-Type: application/json” i begäranhuvudet.
För att snabbt granska svarshuvudet kan du använda följande syntax:
curl --head http://dinwebbadress.se
Exempel:
[[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]#
Ansluta till HTTPS/SSL-URL och ignorera certifikatfel
När du försöker ansluta till en SSL/TLS-skyddad URL, kan fel som rör certifikat eller felmatchande CN uppstå, vilket resulterar i följande felmeddelande:
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Du kan instruera cURL att ignorera certifikatfel genom att använda flaggan --insecure
.
curl --insecure https://dinwebbadress.se
Ansluta med ett specifikt protokoll (SSL/TLS)
Detta är praktiskt när du behöver testa om en viss URL kan ansluta med ett specifikt SSL/TLS-protokoll.
För att ansluta med SSL v3:
curl --sslv3 https://dinwebbadress.se
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 fil från FTP-server
Du kan även använda cURL för att ladda ner filer från en FTP-server genom att ange användarnamn och lösenord.
curl -u användare:lösenord -O ftp://ftpwebbadress/stil.css
Du kan alltid lägga till flaggan -v
för att få mer detaljerad information i utdata.
Värdhuvudet kan användas för att testa webbplatsadresser med IP-adresser när det begärda innehållet endast är tillgängligt om värdhuvudet matchar. Det kan också användas för att testa lastbalanserare.
curl --header 'Host: targetapplikation.se' https://192.0.0.1:8080/
Kan man använda cURL online?
Ja, det finns verktyg för att köra cURL på distans.
Online CURL är ett verktyg som kan användas för att hämta data från webbadresser online, och det ger möjlighet att ange följande alternativ:
--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
cURL kommandobyggare är ett verktyg som hjälper dig att konstruera cURL-kommandon med ett användarvänligt gränssnitt. Du anger informationen i gränssnittet och får sedan det färdiga cURL-kommandot.
cURL är ett kraftfullt verktyg för att felsöka anslutningsproblem i realtid. För ytterligare studier rekommenderas Grunderna i Linux kommandorad som en onlinekurs.