Zum Inhalt

curl - HTTP Client und Datentransfer

generieren

Umfassende Curl-Befehle für HTTP-Anfragen, API-Tests und Datenübertragung auf allen Plattformen.

Grundlegende HTTP Anfragen

GET Anträge

| | 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 | |

POST Anträge

| | 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 | |

Andere HTTP Methoden

| | 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 | |

Kopfzeilen und Authentication

Benutzerdefinierte Kopfzeilen

| | 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 | |

Authentifizierungsmethoden

| | 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 Schlüsselauthentifizierung

```bash

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 ```_

Datenformate

JSON Daten

```bash

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 ```_

Formular-Daten

```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 Daten

```bash

POST XML data

curl -X POST \ -H "Content-Type: application/xml" \ -d 'John30' \ https://api.example.com/users ```_

Dateioperationen

Dateien herunterladen

| | 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 | |

Dateien hochladen

| | 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 | |

Mehrere Dateien

```bash

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 ```_

Erweiterte Optionen

Timeouts und Retries

| | 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 | |

SSL/TLS Optionen

| | 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 und Netzwerk

| | 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 | |

Ausgabe und Formatierung

Ausgangssteuerung

| | 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 | |

Antwort

```bash

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 Verarbeitung

```bash

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)' | ```_

Prüfung und Debugging

API Testing

```bash

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 ```_

Leistungsprüfung

```bash

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 ```_

Fehlerbehebung

```bash

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 ```_

Konfiguration und Skripte

Datei konfigurieren

```bash

~/.curlrc configuration file

user-agent = "MyApp/1.0" connect-timeout = 10 max-time = 30 show-error silent ```_

Bash Schrift

```bash

!/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"\\}' ```_

Sicherheit Best Practices

Sichere Authentifizierung

```bash

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"

```_

Zertifikatskontrolle

```bash

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 ```_

Allgemeine Anwendungsfälle

Web Scraping

```bash

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 ```_

API Integration

```bash

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 ```_

Dateiübertragung

```bash

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 ```_

Fehlerbehebung

Gemeinsame Themen

| | 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 | |

Debugging Commands

```bash

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 ```_