curl 命令详细介绍
前言
curl 是一个功能强大的命令行工具,用于通过 URL 传输数据,支持多种协议(如 HTTP、HTTPS、FTP、FTPS、SCP、SFTP 等)。
一、基本用法
1.发送 GET 请求
curl https://example.com
默认发送 HTTP GET 请求,返回响应内容到终端
2.保存输出到文件
curl -o output.html https://example.com # 保存为指定文件名
curl -O https://example.com/file.txt # 保存为远程文件名
此命令会将 https://example.com/file.txt 文件下载到当前目录,文件名保持为 file.zip。
-o:指定保存文件的名称。
二、请求头与认证
-H
:设置请求头信息。
自定义请求头
curl -H "Authorization: Bearer token" -H "User-Agent: MyApp" https://example.com
设置请求头Authorization、User-Agent
三、HTTP 请求方法
指定请求方法
-X:指定请求方法,如 GET、POST、PUT、DELETE 等。
curl -X POST https://example.com/api # 发送 POST 请求
curl -X PUT https://example.com/api # 发送 PUT 请求
curl -X DELETE https://example.com/api # 发送 DELETE 请求
发送 POST 数据
-d
:用于发送表单数据,常用于 POST 请求。
curl -X POST -d "param1=value1¶m2=value2" http://example.com/api
该命令向 http://example.com/api
发送一个包含表单数据的 POST 请求。
curl -X POST -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}' http://example.com/api
-H "Content-Type: application/json"
:设置请求头,指定请求体的数据类型为 JSON。-d
:后面跟上 JSON 格式的数据。
四、文件上传与下载
上传文件
curl -F "file=@/path/to/file.jpg" https://example.com/upload # 表单上传
curl -T file.txt ftp://example.com/upload/ # FTP 上传
断点续传
curl -C - -O https://example.com/large-file.zip
-C -
- 功能说明:
-C
选项用于启用断点续传功能。后面的-
表示让curl
自动从之前中断的位置继续下载文件。当文件下载过程因网络问题、系统故障或手动中断等原因而暂停后,再次使用带有-C -
选项的curl
命令下载同一个文件时,它会尝试从上次中断的位置继续下载,而不是重新开始整个下载过程。 - 工作原理:
curl
在下载文件时会记录已经下载的字节数,当再次执行该命令时,它会通过 HTTP 协议的Range
请求头告知服务器从指定位置开始传输数据,服务器则根据请求返回剩余部分的文件内容。
-O
- 功能说明:该选项用于将服务器响应的内容保存为与远程文件同名的文件。也就是说,
curl
会从 URL 中提取文件名,并将下载的数据保存到当前工作目录下,文件名与远程服务器上的文件名一致。 - 示例:对于 URL
https://example.com/large-file.zip
,使用-O
选项后,下载的文件会被保存为当前目录下的large-file.zip
。
五、处理 Cookies
保存 Cookies
curl -c cookies.txt https://example.com/login
使用 Cookies
curl -b cookies.txt https://example.com/dashboard
六、代理与网络设置
通过代理访问
curl -x http://proxy-server:port https://example.com
超时设置
curl --connect-timeout 10 https://example.com # 连接超时 10 秒
curl --max-time 30 https://example.com # 最大请求时间 30 秒
七、SSL/TLS 设置
忽略证书验证(不安全,仅测试用)
curl -k https://example.com
指定客户端证书
curl --cert client.pem --key key.pem https://example.com
八、调试与详细信息
显示详细请求过程
curl -v https://example.com # 显示请求头和响应头
仅显示响应头
curl -I https://example.com # 等同于 HEAD 请求
九、其他实用功能
限制下载速度
curl --limit-rate 100K -O https://example.com/large-file.zip
跟随重定向
curl -L https://example.com # 自动跳转
压缩传输(支持 gzip)
curl --compressed https://example.com
十、示例场景
测试 REST API
curl -X POST -H “Content-Type: application/json” -d ‘{“key”:“value”}’ https://api.example.com/data
下载并解压文件
curl -L https://example.com/file.tar.gz | tar xz
监控网站状态
curl -s -o /dev/null -w “%{http_code}” https://example.com
十一、帮助与文档
查看所有选项:
curl --help
完整文档:
man curl
curl
的灵活性使其成为开发者、运维人员的必备工具。通过组合不同选项,可以满足复杂的网络请求需求。