最近一段时间在看朴灵翻译的《深入浅出nodejs》,里面有提到一种脱离浏览器的客户端网络通讯工具,curl命令,自己在电脑上试了一下,感觉非常好用,而且莫名的感觉这是一个非常强大的网络工具,一定会成为web开发者的一把小军刀;因此就上网查了一下相关资料,并整理了一下相关的常用用法:

一、简介

  • CURL:本篇文章的标题即为 官网 上醒目定义的直译:command line tool and library for transferring data with URLs;
  • 支持的协议类型:支持几乎全部的网络传输协议类型,你可能会质疑这里的全部,无需解释,直接贴上原文

    Supports...

    DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and more.

  • 本文不介绍工具的安装,如需安装教程,请自行移步 官网 或者 参考此篇

    二、常用用法

    不管是网站开发,还是其他的传输协议类型,回归本质都是对数据的读写操作,即创建、查询、加解密、传输、修改、删除;其不同之处在于各种协议的基础架构及协议类型的不同,从实现形式上来看,也就是传输控制字段的不同,以及传输界面、交互的差异。下面以网站开发的角度,类比http协议的8中http请求方式(get、post、put、delete、head、connnect、options、trace),从客户端分别来进行各部分操作的说明:

1. 查询:GET--查看网页源码

  1. 如查看百度首页源码:

    curl www.baidu.com

    该命令将发送请求,并在命令行显示相应的结果,如下,:

  2. 如果查看还不能满足你的需求,需要进一步将百度首页源码保存在本地进行学习查看:curl -o name www.baidu.com

    将下载目标网页源码到本地,并命名为‘name’:

  3. 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’,并将结果在命令行输出
  1. GET 添加额外请求信息
  • curl --header "Content-Type=text.plain" yourwebsite.com ----增加请求头/request header
  • curl --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--向服务器上传信息

  1. 表单数据上传:

    curl -X POST --data "key=value" yourwebsite.com ------向目标网站发送post 请求,请求体为:'key=value'
  2. 表单数据url加密后上传:

    curl -X POST --data-urlencode "key=value" yourwebsite.com --向目标网站发送url加密后的post请求,请求体为:‘key=value’

    此处 -X 为curl请求方式设置关键字, curl默认请求方式为get,添加-X参数后,可支持其他请求方式;请求方式必须大写

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. 参考文章

  1. 15 Practical Linux cURL Command Examples;
  2. CURL常用命令;
  3. CURL网站开发指南
  4. CURL英文官网
  5. CURL github项目

    以上主要从前端开发角度,对curl的一般用法进行了整理,对于网站开发或后端API开发,这都不失为一个简介快速方便的工具;如果能进一步将项目开发的需要编写成测试脚本,将为开发带来极大的快感!

--END

curl---一款实用的URL命令行网络通讯工具/库的更多相关文章

  1. 你可能不知道的 Linux 命令行网络监控工具

    http://developer.51cto.com/art/201505/476651_2.htm 对任何规模的业务来说,网络监控工具都 是一个重要的功能.网络监控的目标可能千差万别.比如,监控活动 ...

  2. 【转】又一波你可能不知道的 Linux 命令行网络监控工具

      对任何规模的业务来说,网络监控工具都是一个重要的功能.网络监控的目标可能千差万别.比如,监控活动的目标可以是保证长期的网络服务.安全保护.对性能进行排查.网络使用统计等.由于它的目标不同,网络监控 ...

  3. Linux系统——28个命令行下的工具

    Unix/Linux下的28个命令行下的工具 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具(原文链接),有一些是大家熟悉的,有一些是非常有用的,有一些是不 ...

  4. APICloud提供适用于命令行的开发工具,开发更具极客精神!

    APICloud近期大动作不断,上周刚刚支持Atom编辑器,并推出核心开发工具库.本周又为开发者提供了一款超轻便的新开发工具--CLI工具! 操作系统: Mac/Windows/Linux nodej ...

  5. golang常用库:cli命令行/应用程序生成工具-cobra使用

    golang常用库:cli命令行/应用程序生成工具-cobra使用 一.Cobra 介绍 我前面有一篇文章介绍了配置文件解析库 Viper 的使用,这篇介绍 Cobra 的使用,你猜的没错,这 2 个 ...

  6. VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录

    VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...

  7. 一个简单、易用的Python命令行(terminal)进度条库

    eprogress 是一个简单.易用的基于Python3的命令行(terminal)进度条库,可以自由选择使用单行显示.多行显示进度条或转圈加载方式,也可以混合使用. 示例 单行进度条 多行进度条 圆 ...

  8. [Linux] jq:命令行JSON处理工具

    jq命令帮助我们很方便地在终端查看和处理json文件 jq命令的帮助信息: abby@abby:bgs$ jq -h jq - commandline JSON processor [version ...

  9. 命令行视频下载工具 you-get 和 youtube-dl

    you-get 和 youtube-dl 都是基于 Python 的命令行媒体文件下载工具,完全开源免费跨平台.用户只需使用简单命令并提供在线视频的网页地址即可让程序自动进行嗅探.下载.合并.命名和清 ...

随机推荐

  1. 学习mysql语法--基础篇(二)

      前  言  mysql  mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成]   DML ...

  2. .NET C#转Java没那么难,开发环境篇

    .NET C#转Java没那么难,都是面向对向的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是co ...

  3. angular-ui-alert

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. iOS10 相关的隐私设置,

    最近下载了几个demo,总是一运行就崩,看了下崩溃日志,有几个是因为没在plist里设置因此权限,而现在iOS 10 开始对隐私权限更加严格, 如需使用隐私权限需要在工程的info.plist文件中声 ...

  5. .Net程序调试与追踪的一些方法

    前言 作为一个.net开发工程师,不管是在写桌面程序.服务程序或web程序,在开发阶段,我们必须非常熟悉vs的动态调试技能,当然web程序可能还需要调试前端的脚本或样式,这不在本文的讨论范围.本文主要 ...

  6. EntityFramework.Extended.Update.Ambiguous column name

    异常描述 c#代码 dbcontext.Table.Where(x => x.B > 0).Update( x => new Table() { A = x.B } )  抛出异常: ...

  7. 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 前台页面

    首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 , ...

  8. Makefile学习总结

    Makefile用法分析     在linux开发中,应用程序的编译基本都采用GNU的make工具,而make搭配Makefile来实现工程代码的编译,在越是大型复杂的项目中,make的强悍之处越是明 ...

  9. DotNetCore跨平台~EFCore连接Mysql的方式

    回到目录 在.net frameworks的ef里连接mysql我们已经测试通过了,而在dotnet core里的efCore上去连接mysql我们需要测试一下,并且在测试过程中出现了一些问题,当然最 ...

  10. 关于github 0.6.2版本的使用方法

    貌似做为一名前端开发人员,没听过使用过github,node,vue就像落伍一样,本人也是在前端自摸自爬的路上越走越远了,经常在群里听大神们讨论vue,github,node,好生羡慕,没人教,没人带 ...