Introduction
Curl is a tool for transferring data between servers, supporting protocols, including:
HTTP
HTTPS
FTP
IMAP
LDAP
POP3
SCP
SFTP
SMB
SMTP
etc...
Curl GitHub source repository (github.com)
Curl Official Website (curl.se)
This Curl cheat sheet contains commands and examples of some common Curl tricks.
Curl is a tool for transferring data between servers, supporting protocols, including:
HTTP
HTTPS
FTP
IMAP
LDAP
POP3
SCP
SFTP
SMB
SMTP
etc...
Curl GitHub source repository (github.com)
Curl Official Website (curl.se)
-o <file> # --output: write to file
-u user:pass # --user: authentication-v # --verbose: Make curl verbose during operation
-vv # more verbose
-s # --silent: don't show progress meter or errors
-S # --show-error: When used with --silent (-sS), show errors but no progress meter-i # --include: include HTTP headers in the output
-I # --head: header only-X POST # --request
-L # If the page redirects, follow the link
-F # --form: HTTP POST data for multipart/form-data# --data: HTTP post data
# URL encoding (eg, status="Hello")
-d 'data'
# --data pass file
-d @file
# --get: send -d data via get
-G-A <str> # --user-agent
-b name=val # --cookie
-b, --cookie FILE # Load cookies from the specified file for the URL
-c, --cookie-jar FILE # Save cookies to the specified file from the URL
-H "X-Foo: y" # --header
--compressed # use deflate/gzip --cacert <file>
--capath <dir>-E, --cert <cert> # --cert: client certificate file
--cert-type # der/pem/eng
-k, --insecure # For self-signed certificatesapk add --update curl # install in alpine linux| command | description |
|---|---|
curl -I https://cheatsheets.zip | curl sends a request |
curl -v -I https://cheatsheets.zip | curl request with details |
curl -X GET https://cheatsheets.zip | use explicit http method for curl |
curl --noproxy 127.0.0.1 http://www.stackoverflow.com | curl without http proxy |
curl --connect-timeout 10 -I -k https://cheatsheets.zip | curl has no timeout by default |
curl --verbose --header "Host: www.mytest.com:8182" cheatsheets.zip | curl get extra header |
curl -k -v https://www.google.com | curl get response with headers |
$ curl -v --include \
--form key1=value1 \
--form upload=@localfilename URL$ curl -XGET http://${elasticsearch_ip}:9200/_cluster/nodes | python -m json.tool| command | description |
|---|---|
curl -d "name=username&password=123456" <URL> | curl send request |
curl <URL> -H "content-type: application/json" -d "{ \"woof\": \"bark\"}" | curl sends json |
curl -sSL https://get.rvm.io | bash| command | description |
|---|---|
curl myip.dog | get this machine's public IP |
curl -L -s http://ipecho.net/plain, curl -L -s http://whatismijnip.nl | get my public IP |
curl -u $username:$password http://repo.dennyzhang.com/README.txt | curl with credentials |
curl -v -F key1=value1 -F upload=@localfilename <URL> | curl upload |
curl -k -v --http2 https://www.google.com/ | use http2 curl |
curl -T cryptopp552.zip -u test:test ftp://10.32.99.187/ | curl ftp upload |
curl -u test:test ftp://10.32.99.187/cryptopp552.zip -o cryptopp552.zip | curl ftp download |
curl -v -u admin:admin123 --upload-file package1.zip http://mysever:8081/dir/package1.zip | upload with credentials curl |
More IP tools: myip.dog
curl -s -w \
'\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer }\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' \
-o /dev/null https://www.google.comcurl -o /dev/null --silent -Iw "%{http_code}" https://example.com/my.remote.tarball.gzcurl https://example.com | \
grep --only-matching 'src="[^"]*.[png]"' | \
cut -d \" -f2 | \
while read i; do curl https://example.com/"${i}" \
-o "${i##*/}"; doneDownload all PNG files from the site (using GNU grep)
curl --remote-name "https://example.com/linux-distro.iso"Rename file
curl --remote-name "http://example.com/index.html" --output foo.htmlcurl --remote-name --continue-at -"https://example.com/linux-distro.iso"curl "https://www.{example,w3,iana}.org/index.html" --output "file_#1.html"curl "https://{foo,bar}.com/file_[1-4].webp" --output "#1_#2.webp"Download a series of files (output foo_file1.webp, foo_file2.webp...bar_file1_webp, etc.)
$ curl http://url/file > file$ curl --user username:password http://example.com/
$ curl -u username:password http://example.com/$ curl -o file http://url/file
$ curl --output file http://url/file$ curl -I url
# display header information$ curl -o file http://url/file
$ curl --output file http://url/file$ curl -s http://url/myscript.shcurl -K file
# read configuration from file
curl --config file
$HOME/.curlrc # default configuration file on UNIX-like systemsAdapted from Fechin/referenceGPL-3.0 licenseMarkdown sourceChanges and attribution