cURL er et kommandolinjeværktøj til at hente eller sende data ved hjælp af URL-syntaks.
Hvis du arbejder som udvikler eller i supportfunktionen, skal du være opmærksom på cURL-kommandobrug til fejlfinding af webapplikationer. cURL er et værktøj på tværs af platforme, hvilket betyder, at du kan bruge på Windows, MAC og UNIX.
Følgende er nogle af de mest brugte syntakser med et eksempel til hjælp.
Indholdsfortegnelse
Bekræft, om du kan oprette forbindelse til URL’en
Hvis du arbejder på et UNIX-system og forsøger at forbinde den eksterne URL, er den første ting, du ønsker at gøre, at kontrollere, om du kan få adgang til URL’en via curl.
krøl din url.com
Det vil ikke kaste noget output. Men hvis serveren ikke kan oprette forbindelse, vil du få fejl, som f.eks. ikke kunne løse værten.
[[email protected] tmp]# curl helloitdoesntexist.com curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error [[email protected] tmp]#
Gem URL/URI-output til fil
Hvis du skal gemme URL- eller URI-indholdet i en bestemt fil, kan du bruge følgende syntaks
curl https://yoururl.com > yoururl.html
eks:
[[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]#
Ovenstående eksempel vil gemme alt indhold fra gf.dev til /tmp/gf.html
Vis overskrift for anmodning og svar
Hvis du har problemer og gerne vil validere, får du den forventede anmodning og svaroverskrift.
curl -v yoururl.com
Eks:
[[email protected] tmp]# curl -v https://toadmin.dk.com * About to connect() to toadmin.dk.com port 443 (#0) * Trying 104.25.134.107... * Connected to toadmin.dk.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: toadmin.dk.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=.toadmin.dk.com; HttpOnly; Secure < Vary: Accept-Encoding < Link: <https://toadmin.dk.com/wp-json/>; rel="https://api.w.org/" < Link: <https://toadmin.dk.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 <
Download til en grænsehastighed
Hvis du arbejder på optimering og gerne vil se, hvor lang tid det tager at downloade ved en bestemt hastighed, kan du:-
curl –-limit-rate 2000B
Eks:
curl –-limit-rate 2000B https://gf.dev
Brug af en proxy til at oprette forbindelse
Meget praktisk, hvis du arbejder på DMZ-serveren, hvor du skal oprette forbindelse til den eksterne verden ved hjælp af en proxy.
curl --proxy yourproxy:port https://yoururl.com
Du kan bruge curl ved at indsætte en header med dine data for at teste eller fejlfinde det bestemte problem. Lad os se følgende eksempel for at anmode med Content-Type.
curl --header 'Content-Type: application/json' http://yoururl.com
Ved at gøre ovenstående beder du curl om at videregive Content-Type som application/json i anmodningsheaderen.
Hvis du laver noget fejlfinding og hurtigt vil tjekke svaroverskriften, kan du bruge følgende syntaks.
curl --head http://yoururl.com
Eks:
[[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]#
Tilslut HTTPS/SSL URL og ignorer enhver SSL-certifikatfejl
Når du forsøger at få adgang til SSL/TLS cert-sikret URL, og hvis det har det forkerte certifikat eller CN ikke matcher, vil du få følgende fejl.
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Gode nyheder, du kan instruere cURL til at ignorere certfejlen med –insecure flag.
curl --insecure https://yoururl.com
Opret forbindelse ved hjælp af en specifik protokol (SSL/TLS)
Meget praktisk at teste, om en bestemt URL kan håndtryk over en specifik SSL/TLS-protokol.
For at oprette forbindelse ved hjælp af SSL v3
curl --sslv3 https://yoururl.com
og til forskellige 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
Download fil fra FTP-server
Du kan også bruge curl til at downloade filen ved at angive dit brugernavn og adgangskode.
curl -u user:password -O ftp://ftpurl/style.css
Du kan altid bruge “-v” med enhver syntaks til at udskrive i verbose tilstand.
Host-headeren er nyttig til at teste mål-URL’en over IP, når det anmodede indhold kun er tilgængeligt, når host-headeren matcher. Eller hvis du vil teste applikationen ved hjælp af load balancer IP/URL.
curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/
Hvad med at bruge cURL online?
Ja, det er muligt med følgende værktøjer. Du kan udføre cURL eksternt.
Online CURL – et letvægtsværktøj til at hente URL’en online og muligheden for at tilføje følgende muligheder.
--connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent
cURL kommandolinjebygger – denne er anderledes. Det hjælper dig med at opbygge curl-kommandoen, hvor du kan indtaste information i en fin UI, og nederst får du cURL-kommandoen.
cURL er et nyttigt værktøj til at fejlfinde et forbindelsesproblem i realtid, og jeg håber, at ovenstående hjælper dig. Hvis du ønsker at lære mere, så vil jeg anbefale Grundlæggende om Linux kommandolinje online kursus.