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选项保存下载的文件到指定的文件中:
- -o:将文件保存为命令行中指定的文件名的文件中
- -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¶m2=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