curl 命令详解
一:curl简介及语法
curl是一个命令行访问URL的工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。可以用它构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能,curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。如下图:
[root@VM_110_98_centos ~]# curl --help
----------------------------------------------------------
省略输出内容
[root@VM_110_98_centos ~]#curl --manual 查看模板和详细用法
----------------------------------------------------------
省略输出内容
常用选项:
-v 详细输出,包含请求和响应的首部
-o test 将指定curl返回保存为test文件,内容从html/jpg到各种MIME类型文件
-O 把输出写到该文件中,保留远程文件的文件名
-C 在保存文件时进行续传
-x ip:port 指定使用的http代理
-c
-H
-L 跟随重定向
-S 显示错误信息
-s 静默模式,不输出任何信息
-G 以get的方式发送数据
-f 连接失败是不显示http错误
-d 以post方式传送数据
二:实例
1.只返回状态码
curl -I -m 15 -o /dev/null -s -w %{http_code} www.baidu.com
-I 仅测试HTTP头信息
-m 15 最多查询15s
-o /dev/null 屏蔽原有输出信息
-s 静默模式,不输出任何东西
-w %{http_code} 控制额外输出
2.自定义显示文字和返回状态码
curl -I -m 15 -o /dev/null -s -w "我爱你:%{http_code}" www.baidu.com
3.抓取页面内容到一个文件中(test文件不需要创建)
curl -o test.html www.baidu.com
4. 后面的url要具体到某个文件,不然抓不下来,我们还可以用正则来抓取东西。
下图是在百度中搜索这几天比较热门的李小璐事件为例
复制黏贴这个网址红色箭头的网址http://www.lutouwang.net/detail/17/1231/8jbutue9c.html
curl -O http://www.lutouwang.net/detail/17/1231/8jbutue9c.html
5. 通过--limit-rate选项对curl的最大网络使用进行限制
curl --limit-rate 1000B -O http://www.lutouwang.net/detail/17/1231/8jbutue9c.html
6. 在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权
通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史命令记录时不会将密码泄露,本例以访问svn服务器为例。
curl -u 用户名 svn服务器地址,之后输入密码即可看到目录
7. 以CentOS 7.2版本使用curl一键安装Docker脚本为例
curl -sSL https://get.docker.com/ | sh (-s静默模式,-S显示错误,-L重定向,发送授权给其他主机)
-s和-S很好理解,怎么知道一个网址要用到这个-L参数呢,简单的截图来说明
上面有三个网址都是已经被重定向了,状态码显示301,所以我们要加上-L参数。
8. 不管是在家里还是在公司,很多时候都是在内网中,也就是说很多都是通过 NAT上网的,如果开发人员有需求,想知道他服务器的公网IP,可能有的朋友会说ip138.com,我们都知道现在服务器现在大多都是Linux系统,命令行下怎么办呢?下面是我们技术开发部的大神们分享的命令,我用我的内网虚拟机展示给大家。
1)web@rz13052:~$ curl ip.cn
当前 IP:36.110.230.14 来自:北京市 电信
2)web@rz13052:~$ curl ipinfo.io
{
"ip": "36.110.230.14",
"city": "Beijing",
"region": "Beijing",
"country": "CN",
"loc": "39.9289,116.3883",
"org": "AS23724 IDC, China Telecommunications Corporation"
}web@rz13052:~$
3)web@rz13052:~$ curl cip.cc 或者curl ip.cip.cc
IP : 36.110.230.14
地址 : 中国 北京
数据二 : 北京市 | 电信
URL : http://www.cip.cc/36.110.230.14
如果你在浏览器打开这个网址,可看到此命令的用法
4)web@rz13052:~$ curl myip.ipip.net
当前 IP:36.110.230.14 来自于:中国 北京 北京 电信
5)web@rz13052:~$ curl ifconfig.me 这个没下面第六条命令速度快
36.110.230.14
6)web@rz13052:~$ curl http://members.3322.org/dyndns/getip
36.110.230.14
总结下常用的我们就记住ip.cn和ifconfig.me就行,这个和Linux下的IP很相近。
附:官方文档 https://curl.haxx.se/docs/manpage.html