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.