curl是做什么的
curl是利用URL语法在命令行方式下工作的开源文件传输工具,它支持http,https,ftp,ftps,telnet等多种协议。
常用于模拟提交web数据,与网站API交互(POST/GET请求,可以自定义发送header),也可以用于下载(PS:专职下载还是用wget,支持recursive)。
常用操作
GET请求(-G/–get/省略)
curl http://www.xxxx.com/show?userId=111
POST请求
以application/x-www-url-encoded 方式发送数据(-d/–data):
curl -d "username=sunnyxd&password=12345" URL
以multipart/form-data 的方式发送数据(上传文件,-F/–form):
curl -F filename=@/home/sunnyxd/file.tar.gz -F username=sunnyxd URL
设置cookie
使用cookie (-b/–cookie)
curl URL -b "username=sunnyxd;password=12345"
保存cookie (-c/–cookie-jar)
curl -d "username=sunnyxd&password=12345" -c ./cookie.txt URL 操作结束后把cookie写入文件cookie.txt
抓取页面(下载)
抓取页面保存到test.html:
curl -o test.html URL
或者curl URL > test.html
-O 下载特定文件,url需要指定到一个具体的文件
-C - 断点续传,- 自动推断出正确的续传位置,或者直接指定相应的字节偏移
-f 显示抓取错误信息
-x ip:port 使用代理
-s 不显示进度信息
-e/--referer 伪造来源地址
--limit-rate 50k 限制下载速度
--max-filesize bytes 指定可下载的最大文件大小
格式化显示响应信息
-w 一次完整且成功的操作后输出指定格式的内容到标准输出。
查看接口响应时间
curl -o /dev/null -s -w "%{time_connect}:%{time_starttransfer}:%{time_total}\n" URL
第一个字段,是从命令启动到链接上用的时间
第二个字段,是开始传输数据所用的时间
第三个字段,是完成传输所用的时间
查看页面是否可用
curl -o /dev/null -s -w %{http_code} URL
监控接口可用性的一个简单demo:
#!/bin/bash
echo "check result:"
cat monitor_url | while read line
do
status_code=`curl -o /dev/null -s -w %{http_code} $line`
if [ $status_code -eq 200 ]
then
echo ${line}"is ok"
else
echo ${line}"is fail"
fi
done
curl -w详细介绍:http://www.letuknowit.com/post/17.html
设置浏览器代理 (-A/–user-agent)
curl URL -A "Mozilla/5.0
只打印响应头部信息
通过-I或者–head可以只打印出HTTP头部信息:
curl -I URL
用户认证(-u/–user)
用于HTTP或者FTP的认证,可以指定密码,也可以不指定密码在后续操作中输入密码:
curl -u user:pwd URL
curl -u user URL
通用头部信息传递(-H/–header)
curl -H "Host:127.0.0.1" -H "accept-language:zh-cn" URL
自动跳转到新网址
有的网址是自动跳转的。使用-L参数,curl就会跳转到新的网址。
curl -L URL
设置请求超时时间
curl --connect-timeout seconds URL
设置最大传输时间(-m/–max-time)
curl -m seconds URL
参数详细介绍请看这里:http://man.linuxde.net/curl
参考文章:http://blog.csdn.net/xifeijian/article/details/9367339