[原创]linux命令之curl
Create Time:2013年12月28日
什么是curl?
curl英文意思是卷;卷曲。在Linux中,curl是一个十分强大的http命令行工具。实际上,它是一个利用URL规则在linux命令行下工作的文本传输工具。
curl参数和使用
可以在linux下,使用curl --help来参看所有可使用的参数。很多参数用的不多,下面就先介绍些经常使用的参数。
curl使用方法:curl [options...] <url>
curl可选参数
-A/--user-agent <string> 设置发送给服务器使用的User-Agent -b/--cookie <name=string/file> 设置从文件或者字符串读取cookie -C/--continue-at <offset> 断点续传 -c/--cookie-jar <file> 在操作完成后,将cookie内容写入指定的file -d/--data <data> 使用HTTP的POST方式 -f/--fail 链接失败时不显示错误信息 -I/--head 只显示文档信息 -D/--dump-header <file> 将HTTP头部写入指定file -e/--referer 指定URL的Referer -O/--remote-name 将文件写入本地,并使用服务器文件名作为写入文件名 -o/--output <file> 将输出写入到该file文件 -r/--range <range> 分段下载文件 -s/--slient 静默下载不显示输出任何信息 -x/--proxy <host[:port]> 在指定的ip和端口上使用代理 -v/--verbose 返回更多的操作详细信息(如Response Header以及Response Header等) -#/--progress-bar 用进度条显示当前传送下载
curl使用实例
1,获取指定页面的HTML内容
curl http://www.baidu.com
也可以将指定的页面HTML内容写入到指定文件
curl http://www.baidu.com index.html
也可以使用内置参数-o 将文件写入自定文件
curl -o index_page.html http://www.baidu.com
2,用-O参数获取指定文件,并保存(注:这里需要url具体到具体文件,否则获取不到;同时,可以通过url的正则匹配获取多个文件)
这对于很多宅男来所,再也不用一张张保存自己女神的美图了:-)
curl -O http://d.hiphotos.baidu.com/image/w%3D2048/sign=3abdfd256c061d957d4630384fcc0bd1/0b46f21fbe096b636598da4d0e338744ebf8ac2e.jpg
如果需要加上正则表达:
curl -O http://meinv.ratoo.net/uploads/allimg/120617/5-12061F940[30-40].jpg
当然了,不光可以下载获取图片,还可以下载获取其他格式文件。比如:mp4,mp3等(福音啊,哈哈)
3,模拟表单提交,模拟登录,保存cookie信息(-c参数)
curl -c cookies.txt -d "loginName=XXXX&password=XXXX" https://passport.baidu.com/v2/api/?login

这是访问百度首页时,使用-c参数获取到的cookie文件信息
也可以使用-D参数(保存头部信息)来获取得到的cookie文件
curl -D cookie.txt -d "loginName=xxxxx&password=xxxxx" https://passport.baidu.com/v2/api/?login

这是访问百度首页时,使用-D参数获取的cookie文件信息
这里看到,使用-c和-D获取的cookie文件内容是有不同的。-D是获得完整的头部信息。-c则是只获取cookie信息。
4,使用获取的cookie文件,访问需要某些cookie信息才能访问的页面
curl -b cookie.txt http://hi.baidu.com/
5,curl的断点续传(-C参数)
curl -C -O http://meinv.kongjie.com/uploads/allimg/120411/1-120411105H1.jpg
6,-d参数,curl回抓数据,可以看到请求的结果
curl -d "loginName=aaa" http://www.baidu.com

使用loginName=aaa访问百度首页,看到回传数据的内容
这个参数很有用。对于一些有回传数据的接口或者页面,可以查看回传数据的内容。
7,-f参数
curl -f http://www.baidu.com

8,设置Referer伪造请求来源,某些链接会限制请求来源,可以用-e伪造Referer,逃避限制
curl -e http://localhost:8080 http://www.baidu.com
9,有些网站或者链接为了防止抓取,会屏蔽一些IP,这时候可以使用设置代理的参数-x
curl -x 14.10.18.84:2779 http://img.4493.com/uploads/attaches/2010/12/1292206685-pEyuLv.jpg
10,经常有些比较大的文件,我们可以使用分片下载,于是可以使用-r分片参数
curl -r 0-100 -o img.part1 http://g.hiphotos.baidu.com/image/w%3D2048/sign=b6f86221347adab43dd01c43bfecb21c/503d269759ee3d6d1b1a56c241166d224e4adedf.jpg
curl -r 100- -o img.part2 http://g.hiphotos.baidu.com/image/w%3D2048/sign=b6f86221347adab43dd01c43bfecb21c/503d269759ee3d6d1b1a56c241166d224e4adedf.jpg
下载完后,直接cat就可以使用了:cat img.part* > img.jpg
11,控制显示下载进度,或者不显示下载进度
不显示下载进度:
curl -s -O http://h.hiphotos.baidu.com/image/w%3D2048/sign=577e92f7c1fdfc03e578e4b8e0078694/83025aafa40f4bfb646ffa5d014f78f0f736187f.jpg
显示下载进度:
curl -# -O http://h.hiphotos.baidu.com/image/w%3D2048/sign=577e92f7c1fdfc03e578e4b8e0078694/83025aafa40f4bfb646ffa5d014f78f0f736187f.jpg
12,显示头部文档信息
curl -I http://www.cnblogs.com

13,显示请求整个过程信息,使用-v参数
使用-v参数,不仅可以看到请求信息还可以详细的看到服务器返回的信息,如Response Header以及Response Cookie等
curl -v http://www.cnblogs.com/

如果需要转载,请注明出处:
http://www.cnblogs.com/mushroom721/articles/linux_curl.html
尊重他人,尊重自己~

浙公网安备 33010602011771号