Linux - curl 命令(上)

简介: Linux - curl 命令(上)

背景


  • 看到开发都是用这个命令来调接口,我也跟着用了
  • 的确很方便,有时候你要跟开发讲某个接口可能有问题的时候,总不能每次都截图吧,这样可信力也不高
  • 所以写 curl 调接口是最快的,直接让开发复制粘贴执行一遍,就知道接口的确有问题了

 

curl 介绍


image.png

  • curl 是常用的命令行工具,用来请求 Web 服务器
  • 它的名字就是客户端(client)的 URL 工具的意思
  • 它的功能非常强大,命令行参数多达几十种
  • 如果熟练的话,完全可以取代 Postman 接口测试工具

 

官方文档

https://curl.se/docs/manpage.html

 

支持的协议

  • DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS
  • IMAP、IMAPS、LDAP、LDAP、POP3、POP3、RTMP、RTSP、SCP、SFTP、SMB
  • SMBS、SMTP、SMTPS、TELNET、TFTP

 

提供强大的功能

  • 代理支持
  • 用户身份验证
  • FTP上传
  • httppost
  • SSL连接
  • cookies
  • 文件传输恢复
  • Metalink
  • 等等

 

语法格式

curl [options / URLs]

 

URL 的各种传法


仅做拓展,实际工作感觉不一定会用的上

大括号 { }

http://site.{1,2,3}.com

等价于发了请求了三个 host

http://site.1.com
http://site.2.com
http://site.3.com

 

中括号 [ ] 获得字母数字序列

类似 range(1,100)

ftp://ftp.example.com/file[1-100].txt文件  # 100个请求
ftp://ftp.example.com/file[001-100].txt(带0) # 100个请求
ftp://ftp.example.com/file[a-z].txt文件  # 26个请求

注意:不支持嵌套序列,但可以在每个序列旁边使用多个嵌套序列

 

综合使用

http://example.com/archive[1996-1999]/vol[1-4]/第{a,b,c}部分.html

 

[ ] 结合 步进

http://example.com/file[1-100:10].txt文件    # 每10个取一次,总共10个请求    
http://example.com/file[a-z:2].txt文件    # 每2个取一次,总共13个请求

 

常见参数


不带参数

请求网页地址

https://www.cnblogs.com/poloyy/

返回的是网页的 html 源码

 

如果是一个正常的 get 请求


 

注意

后面的栗子,基本都会加 -v,是为了看请求的详细过程,更容易看到对应的参数已生效,实际使用不需要每次都 -v

 

-A

  • 等价参数: --user-agent <name>
  • 作用:指定客户端的 User-Agent
curl -v -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36" http://baidu.com


 

-b

  • 等价参数: --cookie <data|file>
  • 作用:向服务器发送 Cookie,可以是 data 也可以是一个文件
curl -v -b 'foo=bar' http://baidu.com

Request Headers 将会生成一个Cookie: foo=bar,向服务器发送一个名为 foo、值为 bar 的 Cookie


image.png


通过打印详细信息,可以看到请求头的确加了

 

-c

  • 等价参数: --cookie-jar <filename>
  • 作用:将服务器返回需要设置的 Cookie 写入一个文件
curl -k -v -c test.txt https://www.baidu.com/s?wd=123%E8%89%BE%E5%BE%B7&rsv_spt=1&rsv_iqid=0xf0b9806f0000107b&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=1138&rsv_sug4=1138

会将百度响应需要设置的 Cookie 写入 test.txt 文件


image.png


-d(常用)

  • 等价参数: --data <data>
  • 作用:用于发送 POST 请求的数据体
curl -v  -d 'wd=biying' -d 'ie=UTF-8'  https://www.baidu.com/s


image.png

  • Http 请求头会自动加上 Content-Type : application/x-www-form-urlencoded
  • 并且会自动将请求转为 POST 方法,因此可以省略-X POST

 

--data-urlencode(常用)

作用:参数等同于 -d,发送 POST 请求的数据体,但它会自动将发送的数据进行 URL 编码

curl -v -G --data-urlencode 'wd=b i y i n g' -d 'ie=UTF-8'  https://www.baidu.com/s


image.png


会将空格进行 URL 编码

 

curl -v -G -d 'wd=b i y i n g' -d 'ie=UTF-8'  https://www.baidu.com/s

image.png

-d 就不会 url 编码

相关文章
|
16天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
16天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
13天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
36 9
|
1天前
|
编解码 Linux 数据安全/隐私保护
linux工具之curl与wget高级使用
linux工具之curl与wget高级使用
|
1天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
1天前
|
Linux
【Linux】常用命令
【Linux】常用命令
21 0
|
1天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
12 0
Linux 网络操作命令Telnet
|
2天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
29 0
|
3天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
8 0