广告位联系
返回顶部
分享到

shell中的curl网络请求的实现介绍

linux shell 来源:互联网 作者:秩名 发布时间:2022-02-25 13:55:06 人浏览
摘要

shell中的curl网络请求的实现 curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更棒。但按照传统习惯称 curl 为下载工具。 cu

shell中的curl网络请求的实现
curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更棒。但按照传统习惯称 curl 为下载工具。

curl 支持的通信协议有 有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP 等等,支持的平台有 Linux、MacOSX、Darwin、Windows、DOS、FreeBSD等等。

一、curl的作用:

1、查看网页源码

1

2

3

4

5

6

7

8

9

10

denglibingdeMacBook-Pro-4: curl www.baidu.com

 

<!DOCTYPE html>

<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === " rel="external nofollow" " ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

 

// 保存整个网页,使用 -o 处理

denglibingdeMacBook-Pro-4: curl -o baidu www.baidu.com

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  2381  100  2381    0     0  77899      0 --:--:-- --:--:-- --:--:-- 79366

2、查看头信息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

denglibingdeMacBook-Pro-4: denglibing$ curl -i www.baidu.com

HTTP/1.1 200 OK

Server: bfe/1.0.8.18

Date: Mon, 03 Jul 2017 09:12:17 GMT

Content-Type: text/html

Content-Length: 2381

Last-Modified: Mon, 23 Jan 2017 13:28:11 GMT

Connection: Keep-Alive

ETag: "588604eb-94d"

Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform

Pragma: no-cache

Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/

Accept-Ranges: bytes

...

...

...

 3、发送网络请求信息

GET方式请求:

1

curl example.com/form.cgi?data=xxx  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地

POST方式请求:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//数据和网址分开,需要使用 '--data' 或者 '-d' 参数; curl默认使用GET,使用 '-X' 参数可以支持其他动词, 更多的参数使用 'man curl' 查看

$ curl -X POST --data "data=xxx" example.com/form.cgi

 

// '--user-agent' 字段,表表面客户端的设备信息:

$ curl --user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89/mideaConnect MissonWebKit/4021/zh-Hans (AppStore) (4347701760)" http://www.example.com

 

//使用 '--cookie' 参数,可以让curl发送cookie

$ curl --cookie "name=xxx" www.example.com

 

//添加头信息,自行增加一个头信息。'--header' 或者 '-H' 参数就可以起到这个作用

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

 

 

//提交文件作为请求信息 使用 '@文件名' 请求

$ curl -X POST -H "Content-Type: text/xml" -d @denglibing.txt http://example.com

 

//denglibing.txt:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.webservices.com"><soapenv:Header/><soapenv:Body><ser:addEmpIdCardrecord><ser:empId>11622695,D58C6A25-C683-47D6-A18C-B7741284F632</ser:empId></ser:addEmpIdCardrecord></soapenv:Body></soapenv:Envelope>

二、实例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

denglibingdeMacBook-Pro-4:~ denglibing$ curl https://api.github.com/users

[

  {

    "login": "mojombo",

    "id": 1,

    "avatar_url": "https://avatars3.githubusercontent.com/u/1?v=3",

    "gravatar_id": "",

    "url": "https://api.github.com/users/mojombo",

    "html_url": "https://github.com/mojombo",

    "followers_url": "https://api.github.com/users/mojombo/followers",

    "following_url": "https://api.github.com/users/mojombo/following{/other_user}",

    "gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}",

    "starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}",

    "subscriptions_url": "https://api.github.com/users/mojombo/subscriptions",

    "organizations_url": "https://api.github.com/users/mojombo/orgs",

    "repos_url": "https://api.github.com/users/mojombo/repos",

    "events_url": "https://api.github.com/users/mojombo/events{/privacy}",

    "received_events_url": "https://api.github.com/users/mojombo/received_events",

    "type": "User",

    "site_admin": false

  }

]

当然,既然这些请求是在命令行中执行,完全可以写成shell脚本,来处理一系列的工作,比如多个请求,而shell脚本在Mac中,可以使用定时任务触发,进而完成一系列的自动化工作。

三、相关链接

http://www.ruanyifeng.com/blog/2011/09/curl.html

https://stackoverflow.com/questions/2063520/how-do-i-post-xml-data-with-curl


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/u012390519/article/details/74231606
相关文章
  • shell循环命令的介绍
    1. for 命令 1.1 for 命令的使用 bash shell 提供了for命令,可以创建一个遍历一系列值的循环。每次一轮循环都使用其中一个值来执行已定义好的
  • shell脚本设置日志格式的方法
    shell脚本设置日志格式 1.封装函数 #!/bin/bash function log() { echo $@ } //测试: log this is a test... log today is `date +%Y-%m-%d` 2.设置时间日志 #!/bin/bash
  • linux下shell脚本备份文件的方法实现
    1、shell自动备份 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。 具体步骤:先查询源目录和目标目录中的文件,分别存在file
  • shell脚本实现定时删除文件或文件夹
    一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  • shell脚本批量将文件复制到指定的文件夹下

    shell脚本批量将文件复制到指定的文件夹下
    由于线上文件比较多,选择特定的文件拿下线下进行语料标注,如果指定的文件数量太多,一个个复制就很麻烦。所以写一个shell脚本进行批
  • 在shell脚本中激活conda虚拟环境的几种方法

    在shell脚本中激活conda虚拟环境的几种方法
    在shell脚本中激活conda虚拟环境 常用命令行激活conda的env的命令有2种: 1 2 conda activate ENV_NAME source /home/zhaohuiyao/minconda3/bin/activate ENV_NAME 但是
  • Shell内置命令之exit的语法与实例
    介绍: exit 用于退出当前shell环境进程结束运行,并且可以返回一个状态码.一般使用$?可以获取状态码. 语法: 正确退出语法 exit #默认返回状态
  • shell中的curl网络请求的实现介绍
    shell中的curl网络请求的实现 curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更
  • 使用shell脚本循环处理文本的问题

    使用shell脚本循环处理文本的问题
    公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复: 我们有一个文档cabinet.txt记录了物理机器所在的机柜, 除了文档里的其他机器都
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计