curl 是一款功能强大且用途广泛的命令行工具,用于在各种协议下传输数据。它支持 HTTP、HTTPS、FTP 等多种协议,并提供丰富的选项来处理请求、认证、文件传输等任务。
curl 帮助文件完整翻译
以下是 curl 命令行工具的常用选项及其详细说明,涵盖连接、认证、数据传输、文件操作等功能。
连接与协议相关选项
--abstract-unix-socket <path>:通过指定的抽象 Unix 域套接字建立连接。--alt-svc <filename>:启用 HTTP 的 Alt-Svc 功能,并使用指定文件作为缓存。--connect-timeout <seconds>:设置连接的最大等待时间(单位:秒)。--connect-to <HOST1:PORT1:HOST2:PORT2>:将请求从 HOST1:PORT1 重定向到 HOST2:PORT2。--doh-url <URL>:通过指定的 DoH(DNS over HTTPS)服务解析主机名。--happy-eyeballs-timeout-ms <milliseconds>:设置 Happy Eyeballs 算法的超时时间(单位:毫秒)。--http1.1:强制使用 HTTP/1.1 协议。--http2:启用 HTTP/2 协议。--http2-prior-knowledge:直接使用 HTTP/2,不尝试降级到 HTTP/1.x。--http3:启用 HTTP/3 协议。
认证与安全选项
--anyauth:自动选择合适的身份验证方法。--basic:使用 HTTP 基本认证(Basic Authentication)。--aws-sigv4 <provider1[:prvdr2[:reg[:srv]]]>:使用 AWS V4 签名认证。--digest:启用 HTTP 摘要认证(Digest Authentication)。--negotiate:使用 GSS-Negotiate 或 SPNEGO 认证(常用于 Kerberos)。--oauth2-bearer <token>:使用 OAuth 2.0 的 Bearer Token 进行认证。--user <user:password>:设置服务器的用户名和密码。
SSL/TLS 相关选项
--cacert <file>:指定用于验证对端证书的 CA 证书文件。--cert <certificate[:password]>:指定客户端证书文件及密码。--key <file>:指定私钥文件。--insecure:跳过 SSL/TLS 证书验证(用于测试环境)。--tls13-ciphers <list>:指定 TLS 1.3 的加密算法列表。--tls-max <VERSION>:设置支持的最高 TLS 版本(如 TLSv1.2、TLSv1.3)。
数据发送与表单选项
-d, --data <data>:发送 HTTP POST 数据(默认 Content-Type 为application/x-www-form-urlencoded)。--data-binary <data>:以二进制格式发送 HTTP POST 数据。--data-urlencode <data>:发送 URL 编码后的 HTTP POST 数据。-F, --form <name=content>:以多部分表单(multipart/form-data)格式发送数据。--json <data>:发送 JSON 格式的数据(自动设置 Content-Type 为application/json)。
文件操作选项
-o, --output <file>:将响应写入指定的输出文件。-O, --remote-name:使用远程文件名保存文件。--upload-file <file>:上传指定的本地文件。--create-dirs:自动创建本地所需的目录结构。
请求控制选项
-X, --request <method>:指定 HTTP 请求方法(如 GET、POST、PUT、DELETE)。-H, --header <header/@file>:设置自定义请求头,或从文件中读取。-L, --location:自动跟随服务器重定向。--max-time <seconds>:设置整个请求的最大允许时间。--retry <num>:设置传输失败时的最大重试次数。
输出与调试选项
-i, --include:在输出中包含 HTTP 响应头。-I, --head:仅获取 HTTP 响应头(HEAD 请求)。-v, --verbose:启用详细输出模式,显示请求和响应的详细信息。--trace <file>:启用调试模式并将详细信息写入指定文件。--write-out <format>:自定义输出格式(如显示状态码、耗时等)。
代理相关选项
-x, --proxy [protocol://]host[:port]:通过指定的代理服务器发送请求。--socks5 <host[:port]>:使用 SOCKS5 代理。--proxy-user <user:password>:设置代理的用户名和密码。--proxy-insecure:跳过代理的 SSL/TLS 证书验证。
常用 curl 命令示例
以下是 curl 在实际场景中的应用示例,涵盖基本请求、数据发送、认证、文件操作等功能,帮助您快速掌握其用法。
1. 基本请求
-
发送 GET 请求
curl https://example.com获取指定 URL 的内容,默认使用 GET 方法。
-
发送 POST 请求
curl -X POST https://example.com显式指定 POST 方法发送请求。
2. 设置请求头
-
自定义 User-Agent
curl -H "User-Agent: MyCustomUserAgent" https://example.com模拟特定客户端(如浏览器)的 User-Agent。
-
发送多个请求头
curl -H "Authorization: Bearer <token>" -H "Content-Type: application/json" https://example.com同时设置认证令牌和内容类型。
3. 发送数据
-
发送 POST 数据
curl -X POST -d "key1=value1&key2=value2" https://example.com以键值对形式发送数据,默认编码为
application/x-www-form-urlencoded。 -
发送 JSON 数据
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1","key2":"value2"}' https://example.com发送结构化的 JSON 数据,常用于 API 调用。
-
上传文件
curl -F "file=@/path/to/file" https://example.com/upload以表单方式上传本地文件。
4. 认证与授权
-
基本认证
curl -u username:password https://example.com使用用户名和密码进行 HTTP 基本认证。
-
Bearer Token 认证
curl -H "Authorization: Bearer <token>" https://example.com使用 OAuth 2.0 的 Bearer Token 访问受保护资源。
5. 使用代理
-
通过 HTTP 代理
curl -x http://proxyserver:port https://example.com指定代理服务器转发请求。
-
通过 SOCKS5 代理
curl --socks5 proxyserver:port https://example.com使用 SOCKS5 协议进行代理。
6. 文件下载与上传
-
下载文件并保存
curl -O https://example.com/file.zip使用远程文件名保存文件到本地。
-
下载并重命名
curl -o myfile.zip https://example.com/file.zip指定本地文件名保存文件。
-
上传文件
curl -T myfile.zip https://example.com/upload将本地文件上传至服务器。
7. 设置超时
-
连接超时
curl --connect-timeout 30 https://example.com设置连接超时为 30 秒。
-
总超时
curl --max-time 60 https://example.com设置整个请求的最大时间为 60 秒。
8. 处理重定向
-
自动跟随重定向
curl -L https://example.com跟随服务器返回的 301/302 重定向。
-
限制重定向次数
curl -L --max-redirs 3 https://example.com最多跟随 3 次重定向,避免无限循环。
9. 获取响应头
-
仅获取响应头
curl -I https://example.com发送 HEAD 请求,仅返回头部信息。
-
显示请求和响应头
curl -v https://example.com输出详细的请求和响应头信息。
10. SSL/TLS 配置
-
跳过证书验证
curl -k https://example.com忽略 SSL/TLS 证书验证(仅限测试)。
-
使用证书和密钥
curl --cert /path/to/cert.pem --key /path/to/key.pem https://example.com指定客户端证书和私钥进行双向认证。
11. 调试与日志
-
启用详细模式
curl -v https://example.com显示请求和响应的详细信息。
-
输出调试日志
curl --trace debug.txt https://example.com将详细调试信息保存到文件。
12. 其他实用选项
-
发送带参数的请求
curl "https://example.com?param1=value1¶m2=value2"在 URL 中附加查询参数。
-
使用 HTTP/2
curl --http2 https://example.com强制使用 HTTP/2 协议。
-
保存和读取 Cookie
curl -c cookies.txt https://example.com # 保存 Cookie curl -b cookies.txt https://example.com # 读取 Cookie处理会话相关的 Cookie 数据。
原文 https://blog.csdn.net/2301_79518550/article/details/146922566