curl使用

参考资料:https://gist.github.com/303182519/132568fd0e58cae57202

  • curl使用GET方式请求数据

下载单个文件,默认将输出打印到标准输出中(STDOUT)中

curl http://www.centos.org

指定请求方式

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

curl -I -X DELETE https://api.github.com

设置请求头信息

curl -H 'Accept-Language: zh' http://cnn.com

-H 或被多次指定

curl -H 'Host: 157.166.226.25'-H 'Accept-Language: zh'-H 'Cookie: ID=1234' http://cnn.com

对于”User-Agent”, “Cookie”, “Host”这类标准的HTTP头部字段,通常会有另外一种设置方法。curl命令提供了特定的选项来对这些头部字段进行设置:

-A (or —user-agent): 设置 “User-Agent” 字段.

-b (or —cookie): 设置 “Cookie” 字段.

-e (or —referer): 设置 “Referer” 字段.

curl -H "User-Agent: my browser" http://cnn.com
curl -A "my browser" http://cnn.com

查看响应头信息

curl -I http://www.baidu.com

提交表单

curl --form "fileupload=@filename.txt" http://hostname/resource

通过-o/-O选项保存下载的文件到指定的文件中:

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

同时获取多个文件

curl -O URL1 -O URL2

断点续传

通过使用-C选项可对大文件使用断点续传功能

对CURL使用网络限速

通过--limit-rate 100k选项对下载速度限制为100k

下载指定时间内修改过的文件

curl -z 21-Dec-11,指定在2011/12/21之后有过更新才会进行下载

CURL授权

在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

 curl -u username:password URL

 # 通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露
 curl -u username URL

从FTP服务器下载文件


CURL同样支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,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 选项可将指定的本地文件上传到FTP服务器上

# 将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


为CURL设置代理

x 选项可以为CURL添加代理功能

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

保存与使用网站cookie信息

 # 将网站的cookies信息保存到sugarcookies文件中
 curl -D sugarcookies http://localhost/sugarcrm/index.php

 # 使用上次保存的cookie信息
 curl -b sugarcookies http://localhost/sugarcrm/index.php

传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据 可以通过 --data/-d 方式指定使用POST方式传递数据

# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

# POST
curl -u username --data "param1=value1&param2=value" https://api.github.com

# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端
curl --data @filename https://github.api.com/authorizations

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

curl -I -X DELETE https://api.github.cim

上传文件

curl --form "fileupload=@filename.txt" http://hostname/resource
 


posted @ 2015-12-23 13:10  thouger  阅读(289)  评论(0编辑  收藏  举报