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¶m2=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 命令详解,以及实例
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号