3. 修改数据:PUT

curl -X PUT yourwebsite.com --data "data=somedata"
—向目标网站发送请求,请求体为:data=somedata

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

6.栗子

 curl -X POST --data "grant_type=password&username=admin@web.com&password=20120626" --header "Authorization:Basic ZGFzaGJvYXJkOnNlY3JldA==" https://www.web.com/oauth/token

 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/accounts/me
 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/newmonitor/mongodb
 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/newmonitor/mysql

7. 参考文章

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

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

–END

git bash中可以使用curl

一、简介

  • 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),从客户端分别来进行各部分操作的说明:

一、简介

  • 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
  2. 如果查看还不能满足你的需求,需要进一步将百度首页源码保存在本地进行学习查看:curl -o name www.baidu.com
    将下载目标网页源码到本地,并命名为‘name’:
    图片 3

  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参数后,可支持其他请求方式;请求方式必须大写

curl网站开发指南

作者: 阮一峰

日期: 2011年9月 4日

我一向以为,curl只是一个编程用的函数库。

最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。

===================================

curl网站开发指南

阮一峰 整理

图片 4

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在”标准输出”(stdout)上面。

它支持多种协议,下面举例讲解如何将它用于网站开发。

一、查看网页源码

直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):

  $ curl www.sina.com

  <!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
  <html><head>
  <title>301 Moved Permanently</title>
  </head><body>
  <h1>Moved Permanently</h1>
  <p>The document has moved <a
href=”;
  </body></html>

如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了。

  $ curl -o [文件名] www.sina.com

二、自动跳转

有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址。

  $ curl -L www.sina.com

键入上面的命令,结果就自动跳转为www.sina.com.cn。

三、显示头信息

`-i`参数可以显示http response的头信息,连同网页代码一起。

  $ curl -i www.sina.com

  HTTP/1.0 301 Moved Permanently
  Date: Sat, 03 Sep 2011 23:44:10 GMT
  Server: Apache/2.0.54 (Unix)
  Location:
  Cache-Control: max-age=3600
  Expires: Sun, 04 Sep 2011 00:44:10 GMT
  Vary: Accept-Encoding
  Content-Length: 231
  Content-Type: text/html; charset=iso-8859-1
  Age: 3239
  X-Cache: HIT from sh201-9.sina.com.cn
  Connection: close

  <!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
  <html><head>
  <title>301 Moved Permanently</title>
  </head><body>
  <h1>Moved Permanently</h1>
  <p>The document has moved <a
href=”;
  </body></html>

`-I`参数则是只显示http response的头信息。

四、显示通信过程

`-v`参数可以显示一次http通信的整个过程,包括端口连接和http
request头信息。

  $ curl -v www.sina.com

  * About to connect() to www.sina.com port 80 (#0)
  * Trying 61.172.201.195… connected
  * Connected to www.sina.com (61.172.201.195) port 80 (#0)
  > GET / HTTP/1.1
  > User-Agent: curl/7.21.3 (i686-pc-linux-gnu) libcurl/7.21.3
OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
  > Host: www.sina.com
  > Accept: */*
  > 
  * HTTP 1.0, assume close after body
  < HTTP/1.0 301 Moved Permanently
  < Date: Sun, 04 Sep 2011 00:42:39 GMT
  < Server: Apache/2.0.54 (Unix)
  < Location:
  < Cache-Control: max-age=3600
  < Expires: Sun, 04 Sep 2011 01:42:39 GMT
  < Vary: Accept-Encoding
  < Content-Length: 231
  < Content-Type: text/html; charset=iso-8859-1
  < X-Cache: MISS from sh201-19.sina.com.cn
  < Connection: close
  < 
  <!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
  <html><head>
  <title>301 Moved Permanently</title>
  </head><body>
  <h1>Moved Permanently</h1>
  <p>The document has moved <a
href=”;
  </body></html>
  * Closing connection #0

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。

  $ curl –trace output.txt www.sina.com

或者

  $ curl –trace-ascii output.txt www.sina.com

运行后,请打开output.txt文件查看。

五、发送表单信息

发送表单信息有GET和POST两种方法。GET方法相对简单,只要把数据附在网址后面就行。

  $ curl example.com/form.cgi?data=xxx

POST方法必须把数据和网址分开,curl就要用到–data参数。

  $ curl -X POST –data “data=xxx” example.com/form.cgi

如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`–data-urlencode`。

  $ curl -X POST–data-urlencode “date=April 1” example.com/form.cgi

六、HTTP动词

curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。

  $ curl -X POST www.example.com

  $ curl -X DELETE www.example.com

七、文件上传

假定文件上传的表单是下面这样:

  <form method=”POST” enctype=’multipart/form-data’
action=”upload.cgi”>
    <input type=file name=upload>
    <input type=submit name=press value=”OK”>
  </form>

你可以用curl这样上传文件:

  $ curl –form upload=@localfilename –form press=OK [URL]

八、Referer字段

有时你需要在http
request头信息中,提供一个referer字段,表示你是从哪里跳转过来的。

  $ curl –referer

九、User Agent字段

这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页,比如手机版和桌面版。

iPhone4的User Agent是

  Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us)
AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293
Safari/6531.22.7

curl可以这样模拟:

  $ curl –user-agent “[User Agent]” [URL]

十、cookie

使用`–cookie`参数,可以让curl发送cookie。

  $ curl –cookie “name=xxx” www.example.com

至于具体的cookie的值,可以从http
response头信息的`Set-Cookie`字段中得到。

`-c cookie-file`可以保存服务器返回的cookie到文件,`-b
cookie-file`可以使用这个文件作为cookie信息,进行后续的请求。

  $ curl -c cookies
  $ curl -b cookies

十一、增加头信息

有时需要在http
request之中,自行增加一个头信息。`–header`参数就可以起到这个作用。

  $ curl –header “Content-Type:application/json”

十二、HTTP认证

有些网域需要HTTP认证,这时curl需要用到`–user`参数。

  $ curl –user name:password example.com

【参考资料】

  * Using cURL to automate HTTP
jobs

  * 教你学用CURL

  * 9 uses for cURL worth
knowing

(完)

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参数后,可支持其他请求方式;请求方式必须大写

4. 删除数据:DELETE

curl -X DELETE yourwebsite.com/deleteSource
–向目标网站发送删除请求,请求地址: yourwebsite.com/deleteSource

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

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

  1. 如查看百度首页源码:
    curl www.baidu.com
    该命令将发送请求,并在命令行显示相应的结果,如下,:
    图片 2
  2. 如果查看还不能满足你的需求,需要进一步将百度首页源码保存在本地进行学习查看:curl -o name www.baidu.com
    将下载目标网页源码到本地,并命名为‘name’:
    图片 3

  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

5. 文件上传:

curl --form formname=@localfilname --form press=OK yourwebsite.com

5. 文件上传:

curl --form formname=@localfilname --form press=OK yourwebsite.com

7. 参考文章

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

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

–END

6.栗子

 curl -X POST --data "grant_type=password&username=admin@web.com&password=20120626" --header "Authorization:Basic ZGFzaGJvYXJkOnNlY3JldA==" https://www.web.com/oauth/token

 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/accounts/me
 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/newmonitor/mongodb
 curl -X GET  --header "Authorization:Bearer 5640b2e1-e931-416b-8873-caca121a1aa1"   https://www.web.com/newmonitor/mysql

4. 删除数据:DELETE

curl -X DELETE yourwebsite.com/deleteSource
–向目标网站发送删除请求,请求地址: yourwebsite.com/deleteSource

3. 修改数据:PUT

curl -X PUT yourwebsite.com --data "data=somedata"
—向目标网站发送请求,请求体为:data=somedata

相关文章