附另外一篇关联链接: curl 基本命令

1. 基础用法

1.1 发起 GET 请求

bash
curl http://example.com
  • 默认是 GET 请求。
  • 如果需要格式化输出:
    bash
    curl -s http://example.com | jq

1.2 发起 POST 请求

发送数据到服务器:

bash
curl -X POST -d "key=value&another_key=value" http://example.com

发送 JSON 数据:

bash
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com

从文件中读取数据并发送:

bash
curl -X POST -d @data.json http://example.com

1.3 下载文件

下载文件并保存到本地:

bash
curl -O http://example.com/file.zip

重命名文件:

bash
curl -o new_name.zip http://example.com/file.zip

显示下载进度:

bash
curl -# -O http://example.com/file.zip

1.4 添加请求头

bash
curl -H "Authorization: Bearer token" http://example.com

添加多个请求头:

bash
curl -H "Header1: Value1" -H "Header2: Value2" http://example.com

1.5 发送带参数的 URL

通过 GET 请求传递查询参数:

bash
curl "http://example.com/api?key=value&another_key=value"

2. 高级用法

2.1 保存响应到文件

bash
curl -o response.json http://example.com/api

2.2 显示响应头

bash
curl -I http://example.com

同时显示响应头和正文:

bash
curl -v http://example.com

仅显示头信息并过滤内容:

bash
curl -s -D - http://example.com | grep "Content-Type"

2.3 处理 HTTPS

忽略 SSL 证书验证:

bash
curl -k https://example.com

指定自定义 CA 证书:

bash
curl --cacert /path/to/ca.crt https://example.com

2.4 设置身份验证

(1) HTTP Basic Authentication

bash
curl -u username:password http://example.com

(2) Bearer Token

bash
curl -H "Authorization: Bearer <your_token>" http://example.com

(3) API Key

bash
curl -H "x-api-key: <api_key>" http://example.com

2.5 上传文件

上传文件(以表单形式):

bash
curl -F "file=@/path/to/file" http://example.com/upload

发送多部分表单数据:

bash
curl -F "field1=value1" -F "file=@/path/to/file" http://example.com/upload

2.6 设置超时时间

bash
curl --connect-timeout 10 -m 30 http://example.com
  • --connect-timeout:设置连接超时时间(秒)。
  • -m:设置总超时时间(秒)。

3. 常用功能选项

3.1 保存和恢复下载

断点续传:

bash
curl -C - -O http://example.com/file.zip

3.2 模拟浏览器

通过 User-Agent 模拟浏览器:

bash
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://example.com

3.3 发送自定义请求

bash
curl -X DELETE http://example.com/api/resource/123

支持的请求方法:GETPOSTPUTDELETEPATCH


3.4 Follow Redirects

启用自动跳转:

bash
curl -L http://example.com

4. 测试和调试

4.1 显示详细调试信息

bash
curl -v http://example.com

4.2 测试本地服务

发送请求到本地服务:

bash
curl http://localhost:8080

5. 批量操作

5.1 从文件读取 URL

批量下载文件:

bash
curl -O -J -L -K urls.txt
  • urls.txt 内容示例:
    arduino
    http://example.com/file1.zip http://example.com/file2.zip

5.2 使用循环发送请求

通过 Shell 循环发送多个请求:

bash
for i in {1..10}; do curl "http://example.com/api?key=$i" done

6. 性能优化和负载测试

6.1 并发请求

使用 xargs 并发请求:

bash
cat urls.txt | xargs -n 1 -P 10 curl -O
  • -P 10:指定并发数。

7. 结合其他工具

7.1 配合 jq 解析 JSON

bash
curl -s http://example.com/api | jq '.key'

7.2 保存 Cookie

保存和加载 Cookie:

bash
curl -c cookies.txt -b cookies.txt http://example.com

常用选项总结

选项作用
-X <method>指定请求方法(如 GET、POST、DELETE)
-H "Header: Value"添加自定义请求头
-d "key=value"发送表单数据(POST 请求)
-F "key=@file"上传文件
-o <filename>保存响应到文件
-u username:passwordHTTP Basic 认证
-k忽略 SSL 证书验证
-L跟随重定向
-v显示详细的请求和响应信息
-C -断点续传下载
--connect-timeout <seconds>设置连接超时时间(秒)

点赞(364) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部