最开始了解到这个命令是在使用postman的时候,
postman有一个查看code的功能, 也就是将此次请求以不同编程语言显示, 这时才知道linux 有个curl命令, 感觉还很强大的样子.
一个常见用法, 请求百度首页, 这个例子可以满足我们80%的需要
curl --dump-header header.txt \ # 保存响应头部
-o index.html \ # 保存页面内容
-c cookie.txt \ # 保存cookie
-e https://www.baidu.com \ # 设置Referer
-d 'username=xxx&password=yyy' # 请求数据, 带上它即为POST请求, GET请求可以在请求地址后直接拼参数
https://login.xxx.com # 请求地址
为什么说是80%呢? 比如要做一个模拟登录, 这里通常都要带上cookie发请求.
所以经常用的还有个选项-b
, 后面跟cookie字符串或者cookie文件. 如:
curl -b cookie.txt https://www.baidu.com
上面的这几个参数已经能满足我们绝大多数需求了, 再搭配一些linux内置命令, 完成一个模拟登录还是不难的.
那有哪些比较实用的选项呢?
选项 | 说明 | 例子 |
---|---|---|
-A | 添加ua | -A ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)’ |
-s | 安静模式, 不往命令行输出 | curl -s url |
-v | 输出更多信息, 方便调试 | curl -v url |
-C | 断点续传 | |
-H | 添加请求头 | curl -H ‘X-From:xxx’ -H ‘X-key:value’ |
-I | 只显示文档响应头 | curl -I https://www.baidu.com |
-L | 自动跳转(根据Location响应头) | |
-o | 保存为文件 | curl -o abc.html https://www.baidu.com |
补充(2018-10-14): -s
选项可以只输出http response body,如:
[gl@gl ~]$ curl -s http://192.168.31.65:9200/_search?pretty
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 0,
"successful" : 0,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : 0.0,
"hits" : [ ]
}
}
个人感觉用以上这些参数可以应付绝大多数场景.
欢迎补充指正!