【保姆级教程】curl 命令选项详解与使用指南

【保姆级教程】curl 命令选项详解与使用指南

curl 是一款功能强大且用途广泛的命令行工具,用于在各种协议下传输数据。它支持 HTTP、HTTPS、FTP 等多种协议,并提供丰富的选项来处理请求、认证、文件传输等任务。

curl 帮助文件完整翻译

以下是 curl 命令行工具的常用选项及其详细说明,涵盖连接、认证、数据传输、文件操作等功能。

连接与协议相关选项

--abstract-unix-socket :通过指定的抽象 Unix 域套接字建立连接。--alt-svc :启用 HTTP 的 Alt-Svc 功能,并使用指定文件作为缓存。--connect-timeout :设置连接的最大等待时间(单位:秒)。--connect-to :将请求从 HOST1:PORT1 重定向到 HOST2:PORT2。--doh-url :通过指定的 DoH(DNS over HTTPS)服务解析主机名。--happy-eyeballs-timeout-ms :设置 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 :使用 AWS V4 签名认证。--digest:启用 HTTP 摘要认证(Digest Authentication)。--negotiate:使用 GSS-Negotiate 或 SPNEGO 认证(常用于 Kerberos)。--oauth2-bearer :使用 OAuth 2.0 的 Bearer Token 进行认证。--user :设置服务器的用户名和密码。

SSL/TLS 相关选项

--cacert :指定用于验证对端证书的 CA 证书文件。--cert :指定客户端证书文件及密码。--key :指定私钥文件。--insecure:跳过 SSL/TLS 证书验证(用于测试环境)。--tls13-ciphers :指定 TLS 1.3 的加密算法列表。--tls-max :设置支持的最高 TLS 版本(如 TLSv1.2、TLSv1.3)。

数据发送与表单选项

-d, --data :发送 HTTP POST 数据(默认 Content-Type 为 application/x-www-form-urlencoded)。--data-binary :以二进制格式发送 HTTP POST 数据。--data-urlencode :发送 URL 编码后的 HTTP POST 数据。-F, --form :以多部分表单(multipart/form-data)格式发送数据。--json :发送 JSON 格式的数据(自动设置 Content-Type 为 application/json)。

文件操作选项

-o, --output :将响应写入指定的输出文件。-O, --remote-name:使用远程文件名保存文件。--upload-file :上传指定的本地文件。--create-dirs:自动创建本地所需的目录结构。

请求控制选项

-X, --request :指定 HTTP 请求方法(如 GET、POST、PUT、DELETE)。-H, --header

:设置自定义请求头,或从文件中读取。-L, --location:自动跟随服务器重定向。--max-time :设置整个请求的最大允许时间。--retry :设置传输失败时的最大重试次数。

输出与调试选项

-i, --include:在输出中包含 HTTP 响应头。-I, --head:仅获取 HTTP 响应头(HEAD 请求)。-v, --verbose:启用详细输出模式,显示请求和响应的详细信息。--trace :启用调试模式并将详细信息写入指定文件。--write-out :自定义输出格式(如显示状态码、耗时等)。

代理相关选项

-x, --proxy [protocol://]host[:port]:通过指定的代理服务器发送请求。--socks5 :使用 SOCKS5 代理。--proxy-user :设置代理的用户名和密码。--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 " -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 " 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 数据。

猜你喜欢

AOC显示器保修期详解及申请指南
男朋友总是喜欢舔我的下面对身体有坏处吗
GTA5 稀有车辆获得得攻略 彩蛋位置_ 游戏攻略
365提款验证地址是什么

GTA5 稀有车辆获得得攻略 彩蛋位置_ 游戏攻略

08-05 8322
崩坏3樱色轮回攻略 崩坏3樱色轮回奖励有哪些
苹果手机微信的文件夹在哪里查看呢?
365提款验证地址是什么

苹果手机微信的文件夹在哪里查看呢?

07-04 9302
蚂蚁生肖之谜,揭秘昆虫界的生肖传奇