curl命令常用操作

565 查看

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