新近一段时间在看朴灵翻译的《深刻浅出nodejs》,里面有关联一种退出浏览器的客户端互连网通信工具,curl命令,本人在计算机上试了弹指间,感到这几个好用,而且莫名的觉获得那是1个充足庞大的网络工具,一定会造成web开采者的1把小军刀;由此就上网查了一晃相关资料,并整理了弹指间有关的常用用法:
图片 1

一、简介

  • 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.

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

    2、常用用法

    无论是是网址开辟,仍然其他的传导协议项目,回归本质都以对数据的读写操作,即开立、查询、加解密、传输、修改、删除;其区别之处在于各种协商的基础架构及协商项目标不等,从贯彻情势上来看,也正是传输调控字段的例外,以及传输分界面、交互的差别。上边以网站开采的角度,类比http协议的第88中学http请求情势(get、post、put、delete、head、connnect、options、trace),从客户端独家来张开各部分操作的求证:

git bash中得以应用curl

一. 询问: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

curl网址开采指南

作者: 阮一峰

日期: 2011年9月 4日

自己有史以来以为,curl只是一个编制程序用的函数库。

近几年来才发觉,这么些命令自个儿,就是叁个无比有用的网址开辟工具,请看本人收十的它的用法。

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

curl网址开辟指南

阮一峰 整理

图片 4

curl是1种命令行工具,成效是发生互联网请求,然后拿走和提取数据,显示在”规范输出”(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

2、自动跳转

一对网站是机关跳转的。使用`-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的头音讯。

4、展现通讯进程

`-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

7、文件上传

一旦文件上传的表单是底下那样:

  <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

  * 教你学用CUOdysseyL

  * 9 uses for cURL worth
knowing

(完)

二. 上传数据: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参数后,可支撑任何请求格局;请求情势必须大写

文书档案音信

三. 改造数据:PUT

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

四. 刨除数据:DELETE

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

5. 文本上传:

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

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

七. 参阅文章

  1. 15 Practical Linux cURL Command
    Examples;
  2. CUPRADOL常用命令;
  3. CU途锐L网址开垦指南;
  4. CU途达L英文官方网址;
  5. CURL github项目。

    上述注重在此在此以前端开垦角度,对curl的形似用法进行了整理,对于网站开采或后端API开辟,那都真是三个简单介绍神速方便的工具;如若能更为将项目支付的须求编写成测试脚本,将为付出带来一点都不小的快感!

–END

相关文章