curl命令使用
curl命令可以用来构造http请求。参数有很多,常用的参数如下:
通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
curl的选项功能:
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-u 使用用户名和密码登陆。如curl -uname:passwd URL
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件。如curl -o page.html URL
-d <key=value> 向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用 curl -d "name=username&passwd=pwd" http://www.jbxue.com
-L 当页面有跳转的时候,输出跳转到的页面
-I header信息 当有跳转时,可以通过 curl -L -I URL|grep Location 来确定跳转到的新url地址
-c <file> 保存服务器的cookie文件
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T 1.mp3 www.jbxue.com/upload.php
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传
--------------------------------------
curl --request POST -F "file=@log_1212121_20160517113434.gz" --header "Content-Type: multipart/form-data" http://54.223.255.107:10880/upload
1212121是temid
log_1212121_20160517113434.gz
是log文件,其中1212121是temid
------------------
如发现乱码,可以使用iconv转码:
curl http://iframe.ip138.com/ic.asp|iconv -fgb2312
linux curl使用http代理抓取页面:
url -x 111.95.243.36:80 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl -x 111.95.243.36:80 -U aiezu:password http://www.baidu.com
使用socks代理抓取页面:
curl --socks4 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl --socks5 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
接收cookies:
curl -c /tmp/cookies http://www.baidu.com #cookies保存到/tmp/cookies文件
发送cookies:
curl -b "key1=val1;key2=val2;" http://www.baidu.com #发送cookies文本
curl -b /tmp/cookies http://www.baidu.com #从文件中读取cookies
linux curl get方式提交数据:
url -G -d "name=value&name2=value2" http://www.baidu.com
linux curl post方式提交数据:
curl -d "name=value&name2=value2" http://www.baidu.com #post数据
curl -d a=b&c=d&txt@/tmp/txt http://www.baidu.com #post文件
以表单的方式上传文件:
curl -F file=@/tmp/me.txt http://www.aiezu.com
相当于设置form表单的method="POST"和enctype='multipart/form-data'两个属性
设置http请求头信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
设置http响应头处理:
curl -I http://www.aiezu.com #仅仅返回header
curl -D /tmp/header http://www.aiezu.com #将http header保存到/tmp/header文件
linux curl认证:
curl -u aiezu:password http://www.aiezu.com #用户名密码认证
curl -E mycert.pem https://www.baidu.com #采用证书认证
其它:
curl -# http://www.baidu.com #以“#”号输出进度条
curl -o /tmp/aiezu http://www.baidu.com #保存http响应到/tmp/aiezu