并整理了瞬间生死相依的常用用法,上边比如讲授怎么样将它用于网址开采

作者:必赢网站

方今大器晚成段时间在看朴灵翻译的《深入浅出nodejs》,里面有关系龙马精神种退出浏览器的顾客端网络通信工具,curl命令,自个儿在Computer上试了大器晚成晃,以为那些好用,况且莫名的痛感那是一个非凡强盛的网络工具,一定会产生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奥迪Q5L常用命令;
  3. CUTiggoL网址开拓指南;
  4. CUPAJEROL意大利语官方网址;
  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网址开荒指南

本文由必赢体育发布,转载请注明来源

关键词: