最近一段时间在看朴灵翻译的《深入浅出nodejs》,里面有提到一种脱离浏览器的客户端网络通讯工具,curl命令,自己在电脑上试了一下,感觉非常好用,而且莫名的感觉这是一个非常强大的网络工具,一定会成为web开发者的一把小军刀;因此就上网查了一下相关资料,并整理了一下相关的常用用法:
一、简介
- CURL:本篇文章的标题即为 官网 上醒目定义的直译:
command line tool and library for transferring data with URLs
; 支持的协议类型:支持几乎全部的网络传输协议类型,你可能会质疑这里的全部,无需解释,直接贴上原文
本文不介绍工具的安装,如需安装教程,请自行移步 官网 或者 参考此篇
二、常用用法
1. 查询:GET--查看网页源码
- 如查看百度首页源码:
curl www.baidu.com
该命令将发送请求,并在命令行显示相应的结果,如下,: 如果查看还不能满足你的需求,需要进一步将百度首页源码保存在本地进行学习查看:
curl -o name www.baidu.com
将下载目标网页源码到本地,并命名为‘name’:- GET 的其他用法
curl -i www.baidu.com
------获取请求结果,将响应头、响应体同时在命令行输出curl -I www.baidu.com
------获取请求结果,仅仅将响应头信息在命令行输出curl -L baidu.com
------如目标网页转移位置,将自动进行重定向curl -v www.baidu.com
------在命令行输出一次http请求的全过程,包括端口连接、请求头、请求体、响应头、响应体curl --trace out.txt www.baidu.com
------将整个请求的端口连接、请求信息、响应过程的全部信息保存至本地,并重命名为‘out.txt’curl www.baidu.com/s?wd=hbzyin
------用百度搜索关键字‘hbzyin’: 将在百度首页查询关键字‘hbzyin’,并将结果在命令行输出
- GET 添加额外请求信息
curl --header "Content-Type=text.plain" yourwebsite.com
----增加请求头/request headercurl --cookie "cookiename=xxx" yourwebsite.com
-----增加cookie信息至请求curl -c cookies-file yourwebsite.com
-----将请求响应的cookie信息保存至文件cookie-file中curl -b cookies-file yourwebsite.com
-----将请求响应的cookie信息保存至文件cookie-file中,并在后续请求中使用curl --referer yourwebsite.com www.baidu.com
------添加入口跳转来源yourwebsite.con ,跳转至目标网站百度curl --user-agent "your user angent" baidu.com
------添加客户端设备信息;服务器会根据该字段,针对不同设备返回不同网页格式。如手机和PC
2. 上传数据:POST--向服务器上传信息
- 表单数据上传:
curl -X POST --data "key=value" yourwebsite.com
------向目标网站发送post 请求,请求体为:'key=value' 表单数据url加密后上传:
curl -X POST --data-urlencode "key=value" yourwebsite.com
--向目标网站发送url加密后的post请求,请求体为:‘key=value’
3. 修改数据:PUT
curl -X PUT yourwebsite.com --data "data=somedata"
---向目标网站发送请求,请求体为:data=somedata
4. 删除数据:DELETE
curl -X DELETE yourwebsite.com/deleteSource
--向目标网站发送删除请求,请求地址: yourwebsite.com/deleteSource
5. 文件上传:
curl --form formname=@localfilname --form press=OK yourwebsite.com
6. 参考文章
- 15 Practical Linux cURL Command Examples;
- CURL常用命令;
- CURL网站开发指南;
- CURL英文官网;
以上主要从前端开发角度,对curl的一般用法进行了整理,对于网站开发或后端API开发,这都不失为一个简介快速方便的工具;如果能进一步将项目开发的需要编写成测试脚本,将为开发带来极大的快感!
--END