Qu'est-ce que curl ?
curl est l'abréviation de 'Client URL', un utilitaire CLI pour transférer/recevoir des données en utilisant la syntaxe URL. Il est utilisé dans un large éventail de domaines, y compris le développement web, les tests d'API, l'automatisation CI/CD et le dépannage opérationnel.
Fonctionnalités clés
- Divers protocoles: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS, etc. (selon les options de compilation).
- Contrôle HTTP: Contrôle détaillé des méthodes, en-têtes, cookies, compression, HTTP/2, redirections, délais d'attente, réessais.
- Téléchargement/Téléversement: Téléchargement de fichiers (-o/-O), reprise (-C -), téléversement de formulaires (-F), téléversement d'un seul fichier (-T).
- Sécurité: Vérification des certificats TLS (activée par défaut), spécification de la racine de confiance (--cacert), certificat client (--cert/--key).
- Convivialité pour l'automatisation: Sortie silencieuse (-s), échec à la sortie (-f), sortie formatée (-w), adapté aux scripts.
Options principales (Shell)
L'URL cible de la requête est la plus fondamentale. Vous pouvez spécifier plusieurs URL séparées par des espaces ou les lire à partir d'un fichier (@file).
1. Requêtes et téléchargements de base
2. Méthodes HTTP et transfert de données
3. En-têtes, authentification, cookies
4. Contrôle de la sortie/fiabilité
5. Sécurité/TLS & Proxy/Diagnostic
6. Protocole/Version
7. Aide/Version
Commande générée :
Essayez de combiner les commandes.
Description:
`curl` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples de scénarios d'utilisation (Shell)
Voici des modèles de requêtes fréquemment utilisés en pratique.
Afficher le contenu d'une page web
curl https://example.com
Requête GET de base.
Téléchargement de fichier (suivi de redirection)
curl -O -L https://wordpress.org/latest.zip
-O nom de fichier original, -L suivi de redirection.
GET JSON + formatage
curl -s https://api.github.com/users/google | jq
Analyse/améliore la lisibilité avec jq.
POST JSON
curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users
Spécifie l'en-tête et le corps.
Téléversement de fichier de formulaire (multipart)
curl -F "upload_file=@./my-image.png" https://example.com/upload
Nom du champ=upload_file, spécifie le chemin du fichier avec @.
Authentification par jeton Bearer
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me
Utilise l'en-tête Authorization.
Vérifier uniquement les en-têtes de réponse
curl -I https://google.com
Utile pour diagnostiquer l'état du service/cache.
Échec avec code de sortie non nul + silencieux
curl -sSf https://example.com/health
Combinaison -sS -f : adaptée aux scripts.
Délai d'attente + Réessayer
curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api
Réponse aux réseaux instables.
Tester avec une IP spécifique (--resolve)
curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status
Test de contournement DNS (maintient SNI).
Installation
Généralement fourni par défaut ; sinon, installez-le via le gestionnaire de paquets.
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
Conseils et précautions
Conseils utiles
- curl vs wget: wget est fort pour les téléchargements de gros volumes/récursifs, curl est fort pour l'interaction API/le contrôle fin.
- Guillemets: Il est recommandé d'utiliser des guillemets simples autour des données JSON/caractères spéciaux avec -d/-H.
- Réponse compressée: L'utilisation de --compressed permet au serveur de décompresser automatiquement si pris en charge, réduisant ainsi le volume de données transférées.
- Proxy: Le proxy HTTP est configuré avec -x, SOCKS5 avec --socks5.
- Attention à la sécurité (-k): -k/--insecure est réservé au développement/test. En production, il est recommandé de configurer une racine de confiance (--cacert).