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 编码

相关文章
|
2月前
|
JSON 网络协议 Linux
说说 Linux 的 curl 命令
cURL,熟悉 Linux 的同学,没有人不知道这个命令吧:)我从实用性的角度,说下我比较常用的几个参数。
44 2
|
5月前
|
Linux
Linux实战笔记(一) curl基本使用
Linux实战笔记(一) curl基本使用
95 0
|
9月前
|
Web App开发 JSON Linux
linux Command curl
linux Command curl
|
Linux
Linux:curl常用命令
Linux:curl常用命令
|
域名解析 网络协议 Linux
Linux - curl -w 参数详解
Linux - curl -w 参数详解
355 0
Linux - curl -w 参数详解
|
JSON Linux 网络安全
Linux - curl 命令(下)
Linux - curl 命令(下)
689 0
Linux - curl 命令(下)
|
Linux
linux之http命令行工具curl
curl 是一个利用 URL 规则在命令行下进行文件传输工具。支持文件的上传和下载,是一个综合的传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
137 0
|
Ubuntu Linux Shell
linux端口连通性测试【telnet、wget、ssh、curl】
linux端口连通性测试【telnet、wget、ssh、curl】
742 0
|
Linux 应用服务中间件 nginx
Linux下模拟http的get/post请求(curl or wget)
Linux下模拟http的get/post请求(curl or wget)
299 0
|
Linux 编译器 网络安全
嵌入式Linux开发: 移植curl到arm平台(Tiny4412)
嵌入式Linux开发: 移植curl到arm平台(Tiny4412)
642 0
嵌入式Linux开发: 移植curl到arm平台(Tiny4412)
相关产品
云迁移中心
推荐文章
更多