近年来1段时间在看朴灵翻译的《深远浅出nodejs》,里面有涉及一种退出浏览器的客户端互连网通信工具,curl命令,自个儿在总括机上试了壹晃,感觉十一分好用,而且莫名的痛感那是2个百般有力的网络工具,一定会成为web开发者的1把小军刀;因而就上网查了一下皮之不存毛将焉附材质,并整理了一晃相关的常用用法:
图片 1

近年来壹段时间在看朴灵翻译的《深刻浅出nodejs》,里面有提到一种退出浏览器的客户端互连网通信工具,curl命令,本身在微型总计机上试了瞬间,感觉至极好用,而且莫名的觉得那是一个不胜有力的互联网工具,一定会化为web开发者的一把小军刀;因而就上网查了须臾间有关质地,并整理了须臾间连锁的常用用法:
图片 1

一、简介

  • CURL:本篇作品的标题即为 官网
    上肯定定义的直译:command line tool and library for transferring data with URLs;
  • 支撑的说道项目:帮助大概1切的互联网传输协议项目,你可能会疑心那里的全部,无需解释,直接贴上最初的文章

    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;
  • 协理的合计项目:帮忙大致1切的网络传输协议项目,你恐怕会猜忌那里的全部,无需解释,直接贴上原版的书文

    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),从客户端独家来进展各部分操作的验证:

git bash中得以行使curl

壹. 询问:GET–查看网页源码

  1. 如查看百度首页源码:
    curl www.baidu.com
    该命令将发送请求,并在命令行呈现相应的结果,如下,:
    图片 3
  2. 假若翻开还不能够满意你的需求,须求越来越将百度首页源码保存在地方开始展览学习查看:curl -o name www.baidu.com
    将下载目的网页源码到当地,并取名叫‘name’:
    图片 4

  3. GET 的此外用法

  • curl -i www.baidu.com
    ——获取请求结果,将响应头、响应体同时在命令行输出
  • curl -I www.baidu.com
    ——获取请求结果,仅仅将响应头消息在命令行输出
  • curl -L baidu.com ——如指标网页转移地方,将机关举行重定向
  • curl -v www.baidu.com
    ——在命令行输出1遍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

一. 询问:GET–查看网页源码

  1. 如查看百度首页源码:
    curl www.baidu.com
    该命令将发送请求,并在命令行呈现相应的结果,如下,:
    图片 3
  2. 壹经翻开还无法知足你的急需,供给越来越将百度首页源码保存在本地开始展览学习查看:curl -o name www.baidu.com
    将下载目的网页源码到本地,并取名字为‘name’:
    图片 4

  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只是3个编程用的函数库。

不久前才意识,这么些命令本人,正是三个无比有用的网站开发工具,请看我收10的它的用法。

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

curl网址开发指南

阮一峰 整理

图片 7

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`参数能够来得1回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头新闻中,提供1个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

10壹、扩展头音信

突发性须要在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

  * 教你学用CUEscortL

  * 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参数后,可辅助任何请求格局;请求情势必须大写

二. 上传数据: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

叁. 修改数据:PUT

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

四. 剔除数据:DELETE

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

四. 去除数据:DELETE

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

5. 文本上传:

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

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

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. CUENVISIONL常用命令;
  3. CU汉兰达L网址开发指南;
  4. CU奥迪Q3L英文官网;
  5. CURL github项目。

    如上海重型机器厂大在此以前端开发角度,对curl的貌似用法进行了整理,对于网址开发或后端API开发,那都算作3个简介飞快方便的工具;假如能越来越将品种支出的内需编写成测试脚本,将为开发推动巨大的快感!

–END

柒. 参阅文章

  1. 15 Practical Linux cURL Command
    Examples;
  2. CU景逸SUVL常用命令;
  3. CURubiconL网址开发指南;
  4. CUMuranoL英文官网;
  5. CURL github项目。

    上述重点从前端开发角度,对curl的形似用法进行了整理,对于网址开发或后端API开发,那都真是1个简介神速方便的工具;即使能越来越将品种支出的需求编写成测试脚本,将为付出拉动巨大的快感!

–END

相关文章