| curl-format-diagnostic.txt | ||
| curl-json-diagnostic.txt | ||
| LICENSE | ||
| README-ent.md | ||
| README.md | ||
Dokumentacja: curl-format-diagnostic.txt
Dokument opisuje pola użyte w pliku curl-format-diagnostic.txt (format curl -w @plik). Plik generuje tekstową tabelę z metrykami połączenia, TLS, redirectów oraz transferu, umożliwiając precyzyjną identyfikację źródła opóźnień: DNS, TCP, TLS, backendu aplikacyjnego lub transferu danych.
1. Użycie podstawowe (Linux / macOS)
Podstawowy pomiar (bez zapisu body)
curl -sS -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Pomiar z podążaniem za redirectami
curl -sS -L -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Izolacja DNS (ominięcie rozwiązywania nazwy)
curl -sS --resolve code.devnull.com.pl:443:IP_TUTAJ -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Porównanie IPv4 vs IPv6
curl -4 -sS -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
curl -6 -sS -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
2. Użycie curl na Windows
Dostępność w systemie
Od Windows 10 (1803+) oraz Windows 11 curl.exe jest dostarczany domyślnie z systemem.
Sprawdzenie wersji
curl.exe --version
Uwaga: alias w PowerShell
W PowerShell polecenie curl może być aliasem do Invoke-WebRequest.
Zalecane jest używanie:
curl.exe
Można zweryfikować źródło polecenia:
Get-Command curl
Różnice Windows vs Linux
| Linux/macOS | Windows |
|---|---|
/dev/null |
NUL |
/ w ścieżkach |
\\ w ścieżkach |
curl |
curl.exe (zalecane w PowerShell) |
Przykłady Windows
Zakładając plik:
C:\tools\curl-format-diagnostic.txt
Podstawowy pomiar
curl.exe -sS -o NUL -w "@C:\tools\curl-format-diagnostic.txt" https://code.devnull.com.pl
Z redirectami
curl.exe -sS -L -o NUL -w "@C:\tools\curl-format-diagnostic.txt" https://code.devnull.com.pl
Z --resolve
curl.exe --resolve code.devnull.com.pl:443:203.0.113.10 -o NUL -w "@C:\tools\curl-format-diagnostic.txt" https://code.devnull.com.pl
3. Parametr -A / --user-agent
Parametr -A ustawia nagłówek User-Agent. Domyślnie curl przedstawia się jako curl/<wersja>.
Zastosowania diagnostyczne
- test różnic zależnych od klienta (WAF/CDN/routing)
- obejście blokad na "curl"
- analiza cache per UA
Przykłady
Linux – Firefox
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:115.0) Gecko/20100101 Firefox/115.0" -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Linux – Chrome
curl -A "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Windows – Chrome
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
Windows – Internet Explorer 11
curl -A "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
macOS – Safari
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15" -o /dev/null -w @curl-format-diagnostic.txt https://code.devnull.com.pl
4. --resolve – szczegółowe wyjaśnienie
Składnia:
--resolve host:port:IP
Funkcja:
- pomija DNS
- wymusza połączenie z konkretnym IP
- umożliwia test backendu za load balancerem
- pozwala oddzielić problem DNS od TCP/TLS/backend
Po użyciu --resolve parametr time_namelookup powinien być bliski 0.
5. Opis pól raportu
HTTP
url_effective– końcowy URLscheme– http/httpsmethod– metoda HTTPhttp_version– wersja HTTPhttp_code– kod odpowiedzicontent_type– Content-Type
Redirecty
num_redirectsredirect_urlnum_connects
Sieć
remote_ip,remote_portlocal_ip,local_portip_version
TLS
ssl_verify_resultssl_versionssl_cipher
Transfer
size_requestsize_headersize_downloadsize_uploadspeed_downloadspeed_upload
6. Metryki czasowe i interpretacja
time_namelookup– DNStime_connect– TCP handshaketime_appconnect– TLS handshaketime_pretransfer– gotowość do transferutime_redirect– czas redirectówtime_starttransfer– TTFB (backend)time_total– czas całkowitytime_queue– czas w kolejce (jeśli wspierane)
7. Heurystyki diagnostyczne
| Objaw | Możliwa przyczyna |
|---|---|
Wysoki time_namelookup |
Problem DNS |
Wysoki time_connect |
Routing / firewall |
Wysoki time_appconnect |
TLS / certyfikaty |
Wysoki time_starttransfer |
Backend / DB / aplikacja |
Wysoki time_total przy niskim TTFB |
Wolny transfer |
8. Kompatybilność
- Nie wszystkie pola są dostępne w każdej wersji curl.
- Zaleca się weryfikację wersji:
curl -V
Dokument stanowi kompletną referencję operacyjną do analizy wydajności HTTP przy użyciu curl -w.