linux命令-curl

一. curl

获取文件/查看html
显示html

curl www.sina.com

-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地

curl -o [文件名] www.sina.com
curl -O http://www.gnu.org/software/gettext/manual/gettext.html

可以获取多个文件,在同一个url上获取多个curl -O URL1 -O URL2
文件下载支持,断点续传
在文件下载的过程中,如果进程结束,使用-C可以续传

# 当文件在下载完成之前结束该进程
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%
# 通过添加-C选项继续对该文件进行下载,已经下载过的文件不会被重新下载
$  curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

可以限制curl的网速--limit-rate

curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

下载指定时间内修改过的文件,可以对文件的最后修改日期判断,然后决定下载

# 若yy.html文件在2011/12/21之后有过更新才会进行下载
curl -z 21-Dec-11 http://www.example.com/yy.html

重定向
在重定向的url中,会在response中返回location和302状态吗,浏览器会重定向到这个新的location上
curl默认不会处理302码,指定了-L会跳转到这个地址;

curl -L www.sina.com

结果自动跳转到www.sina.com.cn

显示response头信息
-i html+response头信息
-I 只显示response信息

curl -i www.sina.com
curl -I www.sina.com

显示通信过程
-v可以显示端口和http request头

curl -v www.sina.com

显示更详细的信息

curl --trace output.txt www.sina.com
curl --trace-ascii output.txt www.sina.com

HTTP请求
默认使用GET指令,使用-X可以支持其他动作

curl -X POST www.example.com
curl -X DELETE www.example.com

GET方法和POST方法如下

# GET
curl https://api.github.com/user?access_token=XXXXXXXXXX
# POST
curl --data "param1=value1&param2=value" https://api.github.com
# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations

默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20
在新版本中,可以指定POST--data-urlencode会让curl自动转义特殊编码

curl -X POST --data "data=xxx" example.com/form.cgi

使用-X可以指定使用的协议,包括get和post

curl -X POST--data-urlencode "date=April 1" example.com/form.cgi

ftp服务器上传下载
ftp下载
如果rul是某个路径,而不是具体的文件名,curl会列出该目录下的所有文件名,而不是下载文件

# 列出public_html下的所有文件夹和文件
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
# 下载xss.php文件
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

上传文件到ftp服务器,通过-T选项

# 将myfile.txt文件上传到服务器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 同时上传多个文件
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
# 从标准输入获取内容保存到服务器指定的文件中
curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

字典服务协议
字典服务协议
http://www.cnblogs.com/kkun/archive/2009/03/28/1424052.html

# 查询bash单词的含义
curl dict://dict.org/d:bash
# 列出所有可用词典
curl dict://dict.org/show:db
# 在foldoc词典中查询bash单词的含义
curl dict://dict.org/d:bash:foldoc

为CURL设置代理
-x

# 指定代理主机和端口
curl -x proxysever.test.com:3128 http://google.co.in

Referer字段
在http request头信息中,添加refere字段,表明你是从哪里跳转过来的

curl --referer http://www.example.com http://www.example.com

User Agent字段
客户端设备信息,服务器会根据不同折别返回不同的网页,可以模拟不同的设备请求

curl --user-agent "[User Agent]" [URL]

cookies
利用curl发送cookie

curl --cookie "name=xxx" www.example.com

可以从response头信息的set-cookie字段得到cookie
-c cookie-file可以保存服务器返回的cookie到文件
-b cookie-file可以使用这个文件作为cookie,进行请求

curl -D sugarcookies http://localhost/sugarcrm/index.php
curl -c cookies http://example.com
curl -b cookies http://example.com

增加头信息
在request中自动增加头信息--header

curl --header "Content-Type:application/json" http://example.com

HTTP认证

curl --user name:password example.com
#通常只输入用户名,然后手动输入了密码,这样历史记录中不会看到
curl -u username URL

curl参考资料
1.curl man page
2.curl Manual
3.Using cURL to automate HTTP jobs
4.Compare cURL Features with Other Download Tools
5.curl网站开发指南
5.linux curl 命令详解,以及实例

posted @ 2016-08-17 20:27  zhangshihai1232  阅读(159)  评论(0)    收藏  举报