curl - Client HTTP et transfert de données
Copier toutes les commandes
Générer PDF
Commandes boucles complètes pour les requêtes HTTP, les tests API et le transfert de données sur toutes les plateformes.
Demandes HTTP de base
Obtenez Demandes
Command |
Description |
curl https://api.example.com |
Basic GET request |
curl -v https://api.example.com |
Verbose output with headers |
curl -i https://api.example.com |
Include response headers |
curl -I https://api.example.com |
HEAD request only |
curl -L https://example.com |
Follow redirects |
POSTE Demandes
Command |
Description |
curl -X POST https://api.example.com |
Basic POST request |
curl -d "data" https://api.example.com |
POST with data |
curl -d @file.json https://api.example.com |
POST data from file |
curl -F "file=@upload.txt" https://api.example.com |
File upload |
Autres méthodes HTTP
Command |
Description |
curl -X PUT -d "data" https://api.example.com |
PUT request |
curl -X DELETE https://api.example.com/item/1 |
DELETE request |
curl -X PATCH -d "data" https://api.example.com |
PATCH request |
En-têtes et authentification
En-têtes personnalisés
Command |
Description |
curl -H "Content-Type: application/json" url |
Set content type |
curl -H "Authorization: Bearer token" url |
Bearer token auth |
curl -H "User-Agent: MyApp/1.0" url |
Custom user agent |
curl -H "Accept: application/xml" url |
Accept header |
Méthodes d'authentification
Command |
Description |
curl -u username:password url |
Basic authentication |
curl -u username url |
Prompt for password |
curl --oauth2-bearer token url |
OAuth2 bearer token |
curl --digest -u user:pass url |
Digest authentication |
API Authentification des clés
# API key in header
curl -H "X-API-Key: your-api-key" https://api.example.com
# API key in query parameter
curl "https://api.example.com?api_key=your-api-key"
# Multiple headers
curl -H "Authorization: Bearer token" \
-H "Content-Type: application/json" \
https://api.example.com
JSON Données
# POST JSON data
curl -X POST \
-H "Content-Type: application/json" \
-d '\\\\{"name":"John","age":30\\\\}' \
https://api.example.com/users
# JSON from file
curl -X POST \
-H "Content-Type: application/json" \
-d @data.json \
https://api.example.com/users
```_
### Données du formulaire
```bash
# URL-encoded form data
curl -d "name=John&age=30" https://api.example.com/users
# Multipart form data
curl -F "name=John" -F "age=30" https://api.example.com/users
# File upload with form data
curl -F "file=@document.pdf" \
-F "description=Important document" \
https://api.example.com/upload
```_
### XML Données
```bash
# POST XML data
curl -X POST \
-H "Content-Type: application/xml" \
-d '<user><name>John</name><age>30</age></user>' \
https://api.example.com/users
Opérations de fichiers
Télécharger les fichiers
Command |
Description |
curl -O https://example.com/file.zip |
Download with original name |
curl -o myfile.zip https://example.com/file.zip |
Download with custom name |
curl -C - -O https://example.com/file.zip |
Resume interrupted download |
curl --limit-rate 100k -O url |
Limit download speed |
Télécharger des fichiers
Command |
Description |
curl -T file.txt ftp://server/path/ |
Upload via FTP |
curl -F "file=@upload.txt" url |
HTTP file upload |
curl --upload-file file.txt url |
PUT file upload |
Fichiers multiples
# Download multiple files
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
# Upload multiple files
curl -F "file1=@doc1.pdf" -F "file2=@doc2.pdf" https://api.example.com/upload
Options avancées
Délais et retraits
Command |
Description |
curl --connect-timeout 10 url |
Connection timeout (seconds) |
curl --max-time 30 url |
Maximum total time |
curl --retry 3 url |
Retry on failure |
curl --retry-delay 5 url |
Delay between retries |
Options SSL/TLS
Command |
Description |
curl -k url |
Ignore SSL certificate errors |
curl --cacert ca.pem url |
Use custom CA certificate |
curl --cert client.pem url |
Use client certificate |
curl --tlsv1.2 url |
Force TLS version |
Proxy et réseau
Command |
Description |
curl --proxy proxy.example.com:8080 url |
Use HTTP proxy |
curl --socks5 proxy.example.com:1080 url |
Use SOCKS5 proxy |
curl --interface eth0 url |
Use specific network interface |
curl --dns-servers 8.8.8.8 url |
Use custom DNS servers |
Produit et présentation
Contrôle de sortie
Command |
Description |
curl -s url |
Silent mode (no progress) |
curl -S url |
Show errors even in silent mode |
curl -o /dev/null url |
Discard output |
curl -w "%\\{http_code\\}" url |
Show only HTTP status code |
# Get detailed timing information
curl -w "@curl-format.txt" https://example.com
# curl-format.txt content:
# time_namelookup: %\\\\{time_namelookup\\\\}\n
# time_connect: %\\\\{time_connect\\\\}\n
# time_appconnect: %\\\\{time_appconnect\\\\}\n
# time_pretransfer: %\\\\{time_pretransfer\\\\}\n
# time_redirect: %\\\\{time_redirect\\\\}\n
# time_starttransfer: %\\\\{time_starttransfer\\\\}\n
# ----------\n
# time_total: %\\\\{time_total\\\\}\n
JSON Traitement
# Pretty print JSON with jq
curl -s https://api.example.com/users|jq '.'
# Extract specific fields
curl -s https://api.example.com/users|jq '.[]|.name'
# Filter results
curl -s https://api.example.com/users|jq '.[]|select(.age > 25)'
Essais et débogage
Essai de l'API
# Test REST API endpoints
curl -X GET https://api.example.com/users
curl -X POST -d '\\\\{"name":"John"\\\\}' https://api.example.com/users
curl -X PUT -d '\\\\{"name":"Jane"\\\\}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1
# Test with different content types
curl -H "Accept: application/json" https://api.example.com/users
curl -H "Accept: application/xml" https://api.example.com/users
# Measure response time
curl -w "Total time: %\\\\{time_total\\\\}s\n" -o /dev/null -s https://example.com
# Test multiple requests
for i in \\\\{1..10\\\\}; do
curl -w "%\\\\{time_total\\\\}\n" -o /dev/null -s https://example.com
done
Gestion des erreurs
# Check HTTP status codes
http_code=$(curl -s -o /dev/null -w "%\\\\{http_code\\\\}" https://example.com)
if [ $http_code -eq 200 ]; then
echo "Success"
else
echo "Error: HTTP $http_code"
fi
Configuration et scripts
Fichier de configuration
# ~/.curlrc configuration file
user-agent = "MyApp/1.0"
connect-timeout = 10
max-time = 30
show-error
silent
Scénarios de masse
#!/bin/bash
# API testing script
BASE_URL="https://api.example.com"
API_KEY="your-api-key"
# Function to make authenticated requests
api_request() \\\\{
local method=$1
local endpoint=$2
local data=$3
curl -X "$method" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
$\\\\{data:+-d "$data"\\\\} \
"$BASE_URL$endpoint"
\\\\}
# Usage examples
api_request GET "/users"
api_request POST "/users" '\\\\{"name":"John","email":"john@example.com"\\\\}'
Pratiques exemplaires en matière de sécurité
Authentification sécurisée
# Use environment variables for sensitive data
export API_TOKEN="your-secret-token"
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com
# Read credentials from file
curl -K credentials.txt https://api.example.com
# credentials.txt:
# header = "Authorization: Bearer your-token"
Vérification du certificat
# Always verify SSL certificates in production
curl --cacert /path/to/ca-bundle.crt https://api.example.com
# For development only (not recommended for production)
curl -k https://self-signed.example.com
Cas d'utilisation courante
Scraping Web
# Download webpage
curl -L https://example.com > page.html
# Follow redirects and save cookies
curl -L -c cookies.txt -b cookies.txt https://example.com
# Set user agent to avoid blocking
curl -H "User-Agent: Mozilla/5.0 (compatible; bot)" https://example.com
Intégration de l'API
# GitHub API example
curl -H "Authorization: token your-github-token" \
https://api.github.com/user/repos
# Weather API example
curl "https://api.openweathermap.org/data/2.5/weather?q=London&appid=your-api-key"
# Slack webhook example
curl -X POST \
-H "Content-Type: application/json" \
-d '\\\\{"text":"Hello from curl!"\\\\}' \
https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
Transfert de fichiers
# Upload to cloud storage
curl -X PUT \
-H "Authorization: Bearer token" \
--upload-file document.pdf \
https://api.storage.com/files/document.pdf
# Download with progress bar
curl --progress-bar -O https://example.com/largefile.zip
Dépannage
Questions communes
Problem |
Solution |
SSL certificate errors |
Use -k for testing, fix certificates for production |
Connection timeout |
Increase --connect-timeout value |
Slow downloads |
Use --limit-rate to control bandwidth |
Authentication failures |
Check credentials and authentication method |
Débogage des commandes
# Verbose output for debugging
curl -v https://example.com
# Trace all network activity
curl --trace trace.txt https://example.com
# Show only headers
curl -I https://example.com
# Test connectivity
curl -I --connect-timeout 5 https://example.com