近日一段时间在看朴灵翻译的《深刻浅出nodejs》,里面有关联一种退出浏览器的客户端互连网通信工具,curl命令,自身在管理器上试了一下,感到拾分好用,而且莫名的痛感这是贰个可怜有力的互联网工具,一定会化为web开垦者的一把小军刀;由此就上网查了一下互为表里质地,并整治了一晃相关的常用用法:
必发娱乐官方网站 1

curl是一种命令行工具,成效是发生互连网诉求,然后拿走和提取数据,展现在”标准输出”(stdout)上边。
它协助各个协议,上面比方解说如何将它用来网址开辟。

一、简介

  • 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协议的第88中学http诉求格局(get、post、put、delete、head、connnect、options、trace),从客户端独家来进展各部分操作的求证:

查看网页源码

平昔在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="http://www.sina.com.cn/">here</a>.</p>
  </body></html>
如果要把这个网页保存下来,可以使用`-o`参数,这就相当于使用wget命令了。
  $ curl -o [文件名] www.sina.com

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

自动跳转

有的网站是电动跳转的。使用-L参数,curl就能够跳转到新的网站。

$ curl -L www.sina.com

键入上面包车型地铁下令,结果就自动跳转为www.sina.com.cn。

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参数后,可支撑任何央浼方式;诉求格局必须大写

显示头音讯

-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: http://www.sina.com.cn/
  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="http://www.sina.com.cn/">here</a>.</p>
  </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: http://www.sina.com.cn/
  < 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="http://www.sina.com.cn/">here</a>.</p>
  </body></html>
  * Closing connection #0

设若您以为下面的新闻还远远不足,那么下边包车型大巴授命能够查阅更详尽的通讯进度。

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

或者

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

运转后,请展开output.txt文件查看。

3. 改换数据:PUT

curl -X PUT yourwebsite.com --data "data=somedata"
—向指标网站发送诉求,伏乞体为:data=somedata

出殡表单消息

出殡表单音信有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

4. 刨除数据:DELETE

curl -X DELETE yourwebsite.com/deleteSource
–向目的网址发送删除须要,央浼地址: yourwebsite.com/deleteSource

HTTP动词

curl默认的HTTP动词是GET,使用-X参数能够支持其余动词。

$ curl -X POST www.example.com
$ curl -X DELETE www.example.com

5. 文件上传:

curl --form formname=@localfilname --form press=OK yourwebsite.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]

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

Referer字段

神跡你需求在http
request头新闻中,提供一个referer字段,表示你是从哪个地方跳转过来的。

  $ curl --referer http://www.example.com http://www.example.com

7. 参照小说

  1. 15 Practical Linux cURL Command
    Examples;
  2. CU中华VL常用命令;
  3. CU瑞虎L网址开垦指南;
  4. CU福睿斯L英文官方网址;
  5. CURL github项目。

    以上首要以前端开拓角度,对curl的相似用法进行了整理,对于网址开荒或后端API开荒,那都不失为二个简单介绍快捷方便的工具;即便能更进一步将品种开支的急需编写成测试脚本,将为开销推动巨大的快感!

–END

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 http://example.com
  $ curl -b cookies http://example.com

追加头音信

不经常须要在http
request之中,自行扩张贰个头音信。--header参数就足以起到这些意义。

  $ curl --header "Content-Type:application/json" http://example.com

HTTP认证

有个别网域必要HTTP认证,那时curl须要选用--user参数。

  $ curl --user name:password example.com

参照他事他说加以调查资料:
必发娱乐官方网站,curl网站开辟指南

相关文章