curl 是一个功能强大的命令行工具,用于与 Web 服务器进行数据通信。它支持多种协议,如 HTTP、HTTPS、FTP、SFTP、SMTP 等,并提供了丰富的选项和参数来执行各种操作,如发送请求、下载文件、上传文件等。下面我将详细介绍 curl 命令的用法。
基本语法:
curl [选项] [URL]
-X, --request <METHOD>
:指定请求方法,如 GET、POST、PUT、DELETE 等。-H, --header <HEADER>
:添加请求头信息。可以使用该选项多次添加多个请求头。-d, --data <DATA>
:发送 POST 请求时附带的数据。-F, --form <KEY=VALUE>
:以表单形式发送 POST 请求时提交数据。-o, --output <FILE>
:将响应保存到指定文件。-O, --remote-name
:将响应保存到当前目录下的文件,文件名使用 URL 的最后一部分。-L, --location
:如果服务器返回重定向,则跟随重定向。-c, --cookie <COOKIE>
:发送请求时携带的 Cookie。-b, --cookie-jar <FILE>
:将服务器返回的 Cookie 保存到指定文件。-u, --user <USER:PASSWORD>
:设置用户名和密码,用于进行身份验证。-s, --silent
:静默模式,不显示进度信息。-v, --verbose
:显示详细的调试信息。-i, --include
:在输出中包含响应头信息。-A, --user-agent <USER_AGENT>
:设置 User-Agent 头信息。-e, --referer <URL>
:设置 Referer 头信息。-H, --host <HOSTNAME>
:设置 Host 头信息。-I, --head
:只获取响应头信息,不下载内容。-k, --insecure
:忽略 SSL 证书验证。-m, --max-time <SECONDS>
:设置请求的最大执行时间。-x, --proxy <PROXY>
:设置代理服务器。--data-urlencode <DATA>
:URL 编码发送的数据。--compressed
:使用压缩传输。发送 GET 请求并显示响应内容:
curl https://example.com
发送 POST 请求并附带 JSON 数据:
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://example.com/api
发送 PUT 请求并附带表单数据:
curl -X PUT -F "name=John" -F "age=30" https://example.com/user/1
下载文件并保存到本地:
curl -O https://example.com/file.ext
下载多个文件到指定目录:
curl -O https://example.com/file1.ext -O https://example.com/file2.ext -O https://example.com/file3.ext
发送带有 Basic 认证的 GET 请求:
curl -u username:password https://example.com
发送带有自定义请求头的 GET 请求:
curl -H "Authorization: Bearer token" https://example.com/api
发送带有 Cookie 的请求:
curl -b "cookie1=value1; cookie2=value2" https://example.com
发送带有 Referer 头信息的请求:
curl -e "https://example.com/referer" https://example.com
跟随重定向并显示详细调试信息:
curl -L -v https://example.com
发送 DELETE 请求:
curl -X DELETE https://example.com/resource/1
发送带有自定义 User-Agent 的请求:
curl -A "Custom User Agent" https://example.com
使用代理服务器发送请求:
curl -x proxy_server:port https://example.com
显示响应头信息:
curl -I https://example.com
发送并保存响应到文件:
curl -o response.txt https://example.com
忽略 SSL 证书验证:
curl -k https://example.com
发送 PATCH 请求并附带数据:
curl -X PATCH -d '{"key": "value"}' https://example.com/api
发送带有 URL 编码数据的 POST 请求:
curl --data-urlencode "name=John Doe" --data-urlencode "age=30" https://example.com/api
限制请求执行时间为 5 秒:
curl -m 5 https://example.com
发送带有压缩传输的请求:
curl --compressed https://example.com