Wat is curl?
curl, een afkorting van 'Client URL', is een CLI-hulpprogramma dat gegevens verzendt/ontvangt met behulp van URL-syntaxis. Het wordt gebruikt in een breed scala aan gebieden, waaronder webontwikkeling, API-testen, CI/CD-automatisering en operationele probleemoplossing.
Kernfuncties
- Diverse protocollen: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS, enz. (afhankelijk van build-opties).
- HTTP-controle: Fijne controle over methoden, headers, cookies, compressie, HTTP/2, redirects, timeouts, retries, enz.
- Uploaden/downloaden: Bestanden downloaden (-o/-O), hervatten (-C -), formulierupload (-F), enkele bestandsupload (-T).
- Beveiliging: TLS-certificaatvalidatie (standaard ingeschakeld), vertrouwde root opgeven (--cacert), clientcertificaat (--cert/--key).
- Automatiseringvriendelijk: Stille uitvoer (-s), afsluiten bij falen (-f), geformatteerde uitvoer (-w), geschikt voor scripts.
Belangrijkste opties (Shell)
Als basis is een doel-URL vereist. Meerdere URL's kunnen met spaties worden gescheiden of uit een bestand (@file) worden gelezen.
1. Basisverzoek en download
2. HTTP-methoden en gegevensoverdracht
3. Headers, authenticatie, cookies
4. Uitvoercontrole/betrouwbaarheid
5. Beveiliging/TLS & Proxy/Diagnose
6. Protocol/Versie
7. Hulp/Versie
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`curl` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Voorbeelden van gebruiksscenario's (Shell)
Hier zijn veelgebruikte aanvraagpatronen uit de praktijk verzameld.
Inhoud van webpagina afdrukken
curl https://example.com
Basis GET-verzoek.
Bestand downloaden (redirects volgen)
curl -O -L https://wordpress.org/latest.zip
-O originele bestandsnaam, -L redirects volgen.
JSON GET + mooi weergeven
curl -s https://api.github.com/users/google | jq
Parsen/verbeteren van leesbaarheid met jq.
JSON POST
curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users
Headers en body opgeven.
Formulierbestand uploaden (multipart)
curl -F "upload_file=@./my-image.png" https://example.com/upload
Veldnaam=upload_file, bestandspad opgeven met @.
Bearer token authenticatie
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me
Gebruik de Authorization-header.
Alleen responsheaders controleren
curl -I https://google.com
Nuttig voor het diagnosticeren van servicestatus/cache.
Niet-nul afsluiten bij falen + stil
curl -sSf https://example.com/health
-sS -f combinatie: scriptvriendelijk.
Time-out + opnieuw proberen
curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api
Reageer op onstabiele netwerken.
Testen met specifiek IP (--resolve)
curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status
DNS-omleidingstest (behoudt SNI).
Installatie
Meestal standaard aanwezig, anders installeren via pakketbeheer.
Debian/Ubuntu
sudo apt update && sudo apt install -y curl
RHEL/CentOS/Fedora
sudo dnf install -y curl
Arch Linux
sudo pacman -S --needed curl
Tips & Waarschuwingen
Handige tips
- curl vs wget: wget is sterk in grote/recursieve downloads, curl is sterk in API-interactie/fijne controle.
- Aanhalingstekens: Aanbevolen om JSON/speciale tekens in -d/-H tussen enkele aanhalingstekens te plaatsen.
- Gecomprimeerde respons: Gebruik --compressed om automatisch de compressie van de server te decomprimeren, wat het dataverkeer vermindert indien ondersteund.
- Proxy: Configureer HTTP-proxy met -x, SOCKS5 met --socks5.
- Beveiligingswaarschuwing (-k): -k/--insecure alleen gebruiken voor ontwikkeling/testen. Voor productie wordt aanbevolen om vertrouwde roots te configureren (--cacert).