Mester cURL: 10 essensielle kommandoer med eksempler

Utforsk cURL: Et allsidig verktøy for nettkommunikasjon

cURL er et kraftig kommandolinjeverktøy som brukes for å overføre data ved hjelp av URL-adresser. Det tillater både henting og sending av informasjon, noe som gjør det uvurderlig for utviklere og de som jobber med nettverksstøtte.

Dette tverrplattformverktøyet fungerer sømløst på tvers av operativsystemer som Windows, macOS og UNIX, noe som øker dets fleksibilitet og brukervennlighet. Å mestre cURL er essensielt for å diagnostisere og løse problemer i webapplikasjoner.

Her er en oversikt over noen av de mest brukte kommandoene og syntaksene, med eksempler for å gjøre det enklere å forstå.

Sjekk tilkobling til URL

Når du jobber med et UNIX-system, er det første steget å bekrefte at du kan opprette en tilkobling til den eksterne URL-en. Du kan gjøre dette ved å bruke `curl` kommandoen.

curl dinurl.com

Denne kommandoen vil ikke vise noe output hvis tilkoblingen er vellykket. Men hvis serveren ikke kan opprette en forbindelse, vil du se en feilmelding, som for eksempel «kunne ikke finne verten».

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

Lagre respons fra URL/URI i en fil

For å lagre innholdet fra en URL eller URI i en bestemt fil, kan du bruke følgende kommando:

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

Eksempel:

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

Dette eksemplet lagrer hele innholdet fra gf.dev til filen /tmp/gf.html.

Se forespørsels- og svarhoder

Hvis du opplever problemer og trenger å validere de faktiske forespørsels- og svarhodene, kan du bruke følgende kommando:

curl -v dinurl.com

Eksempel:

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

Last ned med begrenset hastighet

For å teste nedlastningstid ved en bestemt hastighet, kan du bruke kommandoen med `–limit-rate`:

curl --limit-rate 2000B

Eksempel:

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

Bruk en proxy for å koble til

Dette er spesielt nyttig når du jobber på en DMZ-server og må koble til internett via en proxy:

curl --proxy dinproxy:port https://dinurl.com

Du kan også bruke curl til å inkludere hoder med data for feilsøking. Se følgende eksempel der vi angir `Content-Type`:

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

Denne kommandoen instruerer cURL til å sende `Content-Type` som `application/json` i forespørselshodet.

For å raskt sjekke svarhodene, kan du bruke denne:

curl --head http://dinurl.com

Eksempel:

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

Koble til HTTPS/SSL og ignorer sertifikatfeil

Når du forsøker å koble til en SSL/TLS-sertifisert URL, kan du støte på feil hvis sertifikatet er ugyldig eller CN ikke samsvarer. Dette fører ofte til en feilmelding som denne:

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

Du kan omgå dette ved å tvinge cURL til å ignorere sertifikatfeil ved hjelp av flagget `–insecure`:

curl --insecure https://dinurl.com

Koble til med spesifikk protokoll (SSL/TLS)

Dette er nyttig for å teste om en URL kan kommunisere over en bestemt SSL/TLS protokoll. For å koble til med SSL v3:

curl --sslv3 https://dinurl.com

Og for ulike TLS versjoner:

    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
    

Last ned fil fra FTP-server

Du kan laste ned filer via FTP ved å spesifisere brukernavn og passord:

curl -u bruker:passord -O ftp://ftpurl/style.css

Husk at `-v` kan brukes i kombinasjon med enhver syntaks for å vise detaljert output.

Vertshodet er nyttig for å teste målets URL via IP når innholdet kun er tilgjengelig ved samsvarende vertshode eller hvis du vil teste applikasjonen ved bruk av lastbalansert IP/URL:

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

Kan jeg bruke cURL online?

Ja, det finnes online verktøy som lar deg bruke cURL eksternt.

Online CURL er et verktøy for å hente en URL online og med tilleggsvalg:

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

cURL kommandolinjebygger er et annet verktøy som hjelper deg å bygge curl-kommandoer via et brukervennlig grensesnitt.

cURL er et svært nyttig verktøy for feilsøking av tilkoblingsproblemer, og forhåpentligvis har denne guiden hjulpet deg å komme i gang. Hvis du vil lære mer om Linux kommandolinje, anbefales Grunnleggende om Linux kommandolinje onlinekurs.