[原创]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

尊重他人,尊重自己~

posted @ 2013-12-28 17:18  11056u  阅读(434)  评论(0)    收藏  举报