034 curl命令

命令说明

curl 是命令行下的数据传输工具,支持 HTTP/HTTPS/FTP 等协议,常用于接口测试、下载文件、调试请求头与返回码。

语法

curl [选项]... URL

常用参数

参数说明
-o 文件把响应保存为指定文件(output)
-O按远程文件名保存(URL 末尾名)
-I只请求响应头(HEAD),不下载正文
-i在输出中包含响应头
-L跟随重定向(301/302)
-X 方法指定请求方法,如 GET/POST/PUT/DELETE
-d 数据以 POST 方式发送数据
-H "头"添加自定义请求头
-v显示请求/响应详细过程(调试用)
-s静默模式,不显示进度条
-w 格式自定义输出,如 -w "%{http_code}"
-u 用户:密码Basic 认证
--data-json发送 JSON 体(配合 -H Content-Type)

使用示例

$ curl https://linux.hmyx.cc

GET 请求并输出响应正文

$ curl -I https://linux.hmyx.cc

只查看响应头(状态码、服务器)

$ curl -O https://example.com/file.zip

按原名下载文件

$ curl -o out.html https://example.com

保存为指定文件名

$ curl -L https://t.cn/xxx

跟随短链重定向

$ curl -X POST -d "name=tom" https://api/login

POST 表单数据

$ curl -H 'Content-Type: application/json' -d '{"a":1}' https://api/x

发送 JSON 请求

$ curl -s -w "%{http_code}\n" -o /dev/null https://x

只看 HTTP 状态码

$ curl -v https://self-signed.badssl.com

调试 TLS 握手

实用技巧

  • -O 与 -o:-O 保留远程文件名,-o 自定义本地名;下载重定向后的文件要加 -L。
  • 测接口状态码:curl -s -o /dev/null -w "%{http_code}" URL,常用于健康检查脚本。
  • POST JSON:curl -H "Content-Type: application/json" -d @body.json URL,@ 表示从文件读取。
  • 自签证书跳过校验用 -k(insecure),仅测试环境使用。
  • 上传文件用 -F:curl -F "file=@local.txt" URL。
  • 与 wget 区别:curl 偏接口调试与单文件,wget 偏批量/递归下载。