curl 的参数选项和使用

如果文章对您有帮助,请帮 cc 点赞和关注,十分感谢 🙏

介绍

本文记录了 cc 在日常使用中常常使用到的 curl 的参数,以及 curl 的一些功能。

curl 在线手册,或使用命令 curl --manual 查看

  • 代理下载文件
curl --socks5 220.1.212.2:33433 https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.14/bin/apache-tomcat-10.0.14.zip --output tomcat10.zip
  • 发送 POST 请求
curl -d 'username=ddd&password=ddd' -i --cookie 'SESSION=MWIzNjI5NWYtMTI2YS00ZWUzLWE5YWYtZjcxMjc0NDMwODk2' 'http://localhost/user/add'

--socks5 使用代理

--output -o 指定文件输出 -O 将路径作为文件名,当然也可以直接使用管道重定向

-i 显示返回的头

--cookie -b附带 cookie

-d 添加 post 请求参数,默认带了 -d 就是发送 post 请求

-L --location 跟踪重定向

-K --config 指定配置文件

  • 可以把参数写在配置文件中,防止命令过长
  • 默认的配置文件为 CURL_HOME 或 HOME 中的 .curlrc 文件
  • 配置文件中可以省略两个减号,也可以省略参数的引号,前提是不带空格
    也可以指定 url:url http://example.com
    可以在参数和参数值之前添加 =: 让配置文件更清晰
  • 简单使用 config 指定配置
cat cmdline.conf
-v # 使用简写
--head # 使用全称
--location
user-agent 'Everything-is-an-agent' # 省略 --
url=http://localhost/hello
output=example.com.file # 省略 --,用 = 连接
curl -K cmdline.conf http://example.com
  • 批量请求的配置
url=http://localhost:9527/dev-api/system/dept/{3340501,3340502,3340503,3340504,3340505,3340506,3340530,3340540,3340550,3340560,3340570,3340580}
header="Authorization: Bearer 5666418a-3ced-438e-937c-102cd6ac4140"
header="Cookie: rememberMe=true; nickname=admin; username=admin; io=7yc099-BpDIY7DIUAAA6; password=I7Gy+II0hYNuHCHvLJHILJw9qEd/FiUWf+UFyWjrI45QpjMokK48n9WiVXkpRU9H0S1Ov/qxCBNfIx0idakuFQ==; Authorization=5666418a-3ced-438e-937c-102cd6ac4140; Admin-Token=5666418a-3ced-438e-937c-102cd6ac4140"
request=DELETE
-v

-J 使用服务器建议的文件名

-# 显示进度条

-H --header 添加一个请求头,可重复

  • curl -H 'Content-Type: application/json' http://example.com

-d 提供一个 POST 的请求体,可以将请求体内容写在文件中,然后使用 @ 符号读取文件内容,可以省略 -X POST 指定请求类型为 POST

  • @ 符号可以读取一个文件,用来上传或都去文件中的内容
  • curl -H 'Content-Type: application/json' http://example.com -d '@params.json'

-X 指定请求类型,-X POST 指定为 POST,默认都为 GET

-s 静默模式,不输出返回内容

-v 显示链接详情

  • 但是不会显示请求体内容,需要的话使用 --trace

--trace --trace-ascii --trace-time 追踪模式

  • trace:打印包含 请求体 在内的所有请求信息,后面跟一个文件名称,- 表示直接输出在控制台
  • curl --trace - http://example.com
  • trace-ascii:将 16 进制用 ascii 解析
  • trace-time:加上本地时间戳

-w --write-out 在请求完成后输出一些内容

  • 输出一些自带的变量,如 %{content_type},%{local_ip}
curl -w '%{local_ip}\n' http://example.com 

--compressed --tr-compressed 要求服务器压缩数据后再传输

  • 其实是两个命令在请求时添加不同的头,需要服务器支持压缩才行
  • compressed 添加头:Content-Encoding,更广泛
  • tr-compressed 添加头:Transfer-Encoding,该头是专门为了自动解压缩设立的,但是应用没有那么广泛

-o -O 指定输出文件

  • o 手动指定名称
  • O 自动指定名称
  • 在多个 url 时,需要相应指定多个,可以使用 --remote-name-all 为多个 url 应用 -O 选项,否则需要写多个 -O
# 几个 url 就需要几个 -O
curl -O -O http://example.com/1 http://example.com/2
# 使用 --remote-name-all
curl --remote-name-all http://example.com/1 http://example.com/2
# 使用 --remote-name-all, 指定某个 url 使用 -o
curl --remote-name-all http://example.com/1 http://example.com/2 -o file2.txt

--limit-rate 下载限速

  • 单位默认为字节,其他有:K,M,G
curl http://example.com --limit-rate 200K

--max-filesize 限定最大文件

  • 值得注意的是,这是需要服务器支持,让 curl 知道文件的尺寸,否则是无效的

通配符

  • 使用 通配符 同时访问多个 url
# 组合中的逗号不能空格,否则空格会变成地址的一部分
curl 'http://example.com/{one,two}.txt' -o "file_#1.text"
  • 范围:[1-100], [a-z]
    • curl 'http://example.com/[1-10].txt' -o "file_#1.text"
    • 指定间隔:[1-100:2]
  • 列表:{one,two}
    • curl 'http://example.com/{one,two}.txt' -o "file_#1.text"
  • 组合:{one,two}-{1,2}, {one,two}-[1-2]
    • 上面两个都会进行笛卡尔积组合,one1,one2,two1,two2
curl 'http://example.com/{one,two}-[1-2].txt' -o "file_#1_#2.txt"
[1/4]: http://example.com/one-1.txt --> file_one_1.txt
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[2/4]: http://example.com/one-2.txt --> file_one_2.txt
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[3/4]: http://example.com/two-1.txt --> file_two_1.txt
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
[4/4]: http://example.com/two-2.txt --> file_two_2.txt
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
ls
file_one_1.txt  file_one_2.txt  file_two_1.txt  file_two_2.txt

HTTP服务器可以选择在响应消息中提供Content-Disposition标头。这个标头可能包含服务器建议的文件名,
文件名编码和字符集问题。curl不会对文件名进行编码,因此你可能会得到一个URL编码的文件名(如果是在浏览器中,那么浏览器会使用合理的字符集来解码URL,将它还原成更易阅读的内容)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cctga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值