Shell 学习 curl
最近有个作业需要自己写个服务器,接口写完了还得测试,虽然使用 postman 等工具很便捷,但是感觉不够装逼(嗯,就是不够装逼),所以 curl 成了不二之选。
当信用一个命令行工具的时候,习惯性动作都是在 Terminal 里面键入 ‘
使用
1 | curl [options...] <url> |
它的学问全部在 [options…] 里,鉴于帮助文档实在太多了,这里就只挑选进行 Http 请求时用的比较多的参数项。
保存输出到文件
直接执行 curl http://www.baidu.com
会默认输出到标准输出,如果要保存至本地文件,有三种方式:
- 重定向这样就能够输出到 index.html 了
1
curl https://www.baidu.com > ./index.html
- 使用 -oindex.html 可以是任意有写权限的文件
1
curl -o ./index.html https://www.baidu.com
- 使用 -O这里和 -O 有两点不同,首先 url 精确到了具体的资源, -O 后面没有参数。输出文件名称和远程资源名称一样,局限性比较大
1
curl -O http://www.baidu.com/index.html
获取响应头信息
有时候可能需要根据响应头信息做一些判断,那么可以执行
1 | curl -i http://www.baidu.com |
控制台会输出完整的响应(response header + response body)
如果不需要响应体,可以使用 -I
1 | curl -I https://www.baidu.com |
如果这些信息还不够,还可以使用 -v、-V 选项
设置头信息
有些接口可能需要定制头信息,这时候就可以使用 -H
选项:
1 | curl -H "User-Agent: custom UA" -H "Referer: https://xinsbackyard.tech" https://www.baidu.com |
设置 UA
设置 User-Agent 可以使用 -H,也可以使用 -A
:
1 | curl -A "custom UA" https://www.baidu.com |
设置 Referer
同理 UA,可以使用 -e
:
1 | curl -e “http://xinsbackyard.tech” https://baidu.com |
cookie
在进行模拟登录的时候,需要保存 cookie 来保持登录状态。使用 -c
保存返回的 cookie,下次请求的时候就可以使用 -b
来读取 cookie :
1 | curl -c ./cookie-jar https://www.baidu.com |
重定向
模拟登录成功后一般会进行一次重定向,如果想要获得重定向之后的输出,那么就使用 -L
选项:
1 | curl -L http://www.xxxxx.com |
指定请求方法
curl 默认请求方法是 GET,要更改默认行为可以使用 -X
选项:
1 | curl -X POST http://www.xxx.com |
发送数据
POST 请求需要发送数据时,使用 -d
选项:
1 | curl -d "username=hahaha&password=23333" https://www.xxx.com/login |
这样就可以发送一个表单。
如果要发送文件,使用 @
:
1 | curl -X POST -d @filename.zip https://www.xxx.com |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱吃胡萝卜!