Linux- 系统随你玩之--玩出花活的命令浏览器-双生姐妹花

news2025/7/9 12:18:07

在这里插入图片描述

文章目录

  • 1、背景
  • 2、命令浏览器-双生姐妹花
    • 2.1、姐妹花简介
    • 2.2 、验名正身
    • 2.3、常用功能选项
  • 3、常用实操
    • 3.1、发送请求获取文件
      • 3.1.1、抓取页面内容到一个文件中
      • 3.1.2、多个文件下载
      • 3.1.3、下载ftp文件
      • 3.1.4、断点续传
      • 3.1.5、上传文件
      • 3.1.6、内容输出
    • 3.2 、利用curl测试接口
    • 3.3 、模拟登录相关
      • 3.3.1、cookie
      • 3.3.2、设置代理字符串
      • 3.3.3、 加密与认证
      • 3.3.4、域名解析
      • 3.3.4、 301、302
  • 4、结语

1、背景

前文在续,书接上一回Linux- 系统随你玩之–玩出花活的命令浏览器下,玩出花活的命令浏览器有个双生姐妹花,今天我们就请它闪亮出场 。

2、命令浏览器-双生姐妹花

2.1、姐妹花简介

curl是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。在那个视窗还没流行的黑暗时代,它是一个用于传输数据的命令行工具与库,同时它支持文件上传和下载。

curl(客户端URL)是一个开放源代码的命令行工具,还包含了用于程序开发的跨平台的库(libcurl),用于在服务器之间传输数据,并分发给几乎所有新的操作系统。
curl编程用于需要通过Internet协议发送或接收数据的几乎任何地方。
curl命令使用了libcurl库来实现,libcurl库经常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。

2.2 、验名正身

我们可以通过curl的官方网站获取该工具的最新版本,以及最全面的使用方法。

https://curl.haxx.se/

在这里插入图片描述
它的开源代码存放在:github

https://github.com/curl/curl
在这里插入图片描述

从官方我们可以知道curl支持以多种方式检索和发送数据,并输出到标准输出,可以无缝衔接标准unix管道使用。在绝大多数的*nix操作系统上都默认安装。

cURL支持几乎所有的互联网协议(DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,MQTT,POP3,POP3S,RTMP,RTMPS,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,TELNET和TFTP)。
curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest,CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。

curl设计为无用户交互下完成工作;curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传…。

2.3、常用功能选项

语法格式:

curl [option] [url]

参数选项:

-A:随意指定自己这次访问所宣称的自己的浏览器信息
-A/–user-agent 设置用户代理发送给服务器
-b/–cookie <name=string/file> cookie字符串或文件读取位置
    - basic 使用HTTP基本验证
-B/–use-ascii 使用ASCII /文本传输
-c/–cookie-jar 操作结束后把cookie写入到这个文件中
-C/–continue-at 断点续转
-d/–data HTTP POST方式传送数据
     --data-ascii 以ascii的方式post数据
    --data-binary 以二进制的方式post数据
     --negotiate 使用HTTP身份验证
    --digest 使用数字身份验证
    --disable-eprt 禁止使用EPRT或LPRT
    --disable-epsv 禁止使用EPSV
-D/–dump-header 把header信息写入到该文件中
-e/–referer 来源网址
-f/–fail 连接失败时不显示http错误
-F/–form <name=content> 模拟http表单提交数据
-g/–globoff 禁用网址序列和范围使用{}和[]
-h/–help 帮助
-H/–header 自定义头信息传递给服务器
    --ignore-content-length 忽略的HTTP头信息的长度
-I/–head 仅返回头部信息,使用HEAD请求
-m/–max-time 指定处理的最大时长
-o/–output 指定输出文件名称
   --retry 指定重试次数
-O/–remote-name 把输出写到该文件中,保留远程文件的文件名
-r/–range 检索来自HTTP/1.1或FTP服务器字节范围
-s/–silent 减少输出的信息,比如进度
   --connect-timeout 指定尝试连接的最大时长
-T/–upload-file 上传文件
-u/–user <user[:password]> 设置服务器的用户和密码
-v/–verbose 输出详细的返回信息
-w/–write-out [format] 什么输出完成后
-x/–proxy <host[:port]> 在给定的端口上使用HTTP代理
-#/–progress-bar 进度条显示当前的传送状态
-X/–request 指定什么命令
-y/–speed-time 放弃限速所要的时间。默认为30
-Y/–speed-limit 停止传输速度的限制,速度时间’秒

3、常用实操

3.1、发送请求获取文件

3.1.1、抓取页面内容到一个文件中

通过-o/-O选项保存下载的文件到指定的文件中:
-o:将文件保存为命令行中指定的文件名的文件中
-O:使用URL中默认的文件名保存文件到本地(注意后面的url要具体到某个文件,不然抓不下来。还可以配合使用正则来抓取)

curl -o index.html http://www.baidu.com --将百度首页内容抓取到 index.html中
curl -O index.html http://www.baidu.com
在这里插入图片描述

3.1.2、多个文件下载

A. 使用多个-O可以同时获取多个文件内容。若同时从同一站点下载多个文件时,curl会尝试重用链接。
B. 使用循环下载
有时候下载图片可以能是前面的部分名称是一样的,就最后的文件名末尾名不一样。这样就会把test1,test2,test3全部保存下来.
    curl -O http://www.linux.com/test[1-3].jpg

3.1.3、下载ftp文件

curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法

curl -O -u 用户名:密码 ftp://www.linux.com/test1.jpg
curl -O ftp://用户名:密码@www.linux.com/test1.jpg

3.1.4、断点续传

断点续转,从文件头的指定位置开始继续下载/上传;offset续传开始的位置,如果offset值为“-”,
curl会自动从文件中识别起始位置开始传输;

curl -# -o centosstream8.iso -C - http://mirrors.aliyun.com/centos/8-stream/isos/x86_64/CentOS-Stream-8-20230308.3-x86_64-dvd1.iso
curl -C -O http://www.linux.com/test1.jpg

下载进度条
显示进度条(option:-#)或不显示进度条(option:-s)

curl -# -O https://i0.hdslb.com/bfs/archive/f9503413dd4ac32594bac03a4671601e21b02064.jpg
curl -s -O https://i0.hdslb.com/bfs/archive/f9503413dd4ac32594bac03a4671601e21b02064.jpg
在这里插入图片描述

3.1.5、上传文件

  1. FTP:

curl -T test1.jpg -u 用户名:密码 ftp://www.linux.com/img/

  1. 表单上传文件: -F/–form
    相当于设置form表单的method="POST"和enctype='multipart/form-data’两个属性

curl --form “fileupload=@filename.txt” http://hostname/resource

3.1.6、内容输出

  1. 获取服务器内容,默认将输出打印到标准输出中(STDOUT)中。

curl https://curl.se

  1. debug场景中,通过 -v参数可以看到详细解析过程

curl -v https://curl.se/
在这里插入图片描述

3.2 、利用curl测试接口

  1. 常用的测试命令为:
curl -v -X POST -H "Content-Type: application/json" http://127.0.0.1:8080/user -d'{"username":"admin","password":"xxxxxx"}'

在这里插入图片描述

  1. 测试get请求

curl URL
URL -O 文件绝对路径
curl http://www.linuxidc.com/login.cgi?user=test&password=123456

  1. 测试post请求

请求主体用json格式
curl -X POST -H ‘content-type: application/json’ -d @json文件绝对路径 URL
curl -X POST -H ‘content-type: application/json’ -d ‘json内容’ URL
请求主体用xml格式
curl -X POST -H ‘content-type: application/xml’ -d @xml文件绝对路径 URL
curl -X POST -H ‘content-type: application/xml’ -d ‘xml内容’ URL

curl -d “user=nickwolfe&password=12345” http://www.linuxidc.com/login.cgi

A. 发送post请求时需要使用-X选项,除了使用POST外,还可以使用http规范定义的其它请求谓词,如PUT,DELETE等

curl -XPOST url

在这里插入图片描述
B. 发送post请求时,通常需要指定请求体数据。可以使用-d或–data来指定发送的请求体。

curl -XPOST -d “queryname=leo&pageSize=10” url

C. 如果需要对请求数据进行urlencode

curl -XPOST --data-urlencode “queryname=leo&pageSize=10” url

d.发送post请求还可以考虑下面几个子选项:

–data-raw
–data-ascii
–data-binary

3.3 、模拟登录相关

3.3.1、cookie

1.保存http的response里面的 cookie 信息。
    curl -c cookiec.txt http://www.linux.com
2.保存http的response里面的 header 信息。
    curl -D cookied.txt http://www.baidu.com
3.curl可以根据旧的cookie写出新cookie并发送到网站:
    curl -b cookies.txt -c newcookies.txt www.cookiesite. com

很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。

curl -b cookiec.txt http://www.linux.com
curl -b “domain=linux.com” http://www.linux.com 自定义cookie内容信息

3.3.2、设置代理字符串

当我们经常用curl去访问网站上的信息,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理
#指定代理主机和端口

curl -x proxysever.test.com:3128 http://google.co.in 或
curl -x 34.xx.xx.xx:12779 -o home.html http://www.XXXX.com

  1. curl限制带宽
    curl URL --limit-rate 速度

3.3.3、 加密与认证

1. 加密HTTP
如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:

curl https://xxxx. com

2. http认证
如果是采用证书认证的http地址,证书在本地,那么curl这样使用:

curl -E mycert.pem https://xxxx. com

3.3.4、域名解析

不需要修改/etc/hosts,curl直接解析ip请求域名
将 http://example.com 或 https://example.com 请求指定域名解析的IP为127.0.0.1
参数语法: --resolve host:port:address Force resolve of HOST:PORT to ADDRESS

curl --resolve example.com:80:127.0.0.1 http://example.com/
curl --resolve example.com:443:127.0.0.1 https://example.com/

3.3.4、 301、302

在这里插入图片描述
如访问出现301或302,curl 命令行不支持 301 或 302 的解决办法
curl -L --max-redirs 2 http://www.linux.com
-L 指令其实就是支持 location 头
–max-redirs 就是支持的重定向深度,这里指定 2,主要原因是防止进入死循环。
在这里插入图片描述

4、结语

各位看官命令浏览器-双生姐妹花curl今天就到此为止,预知此系列后事如何且听下回分解 您了!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/407268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模—聚类(matlab、spss)K均值 Q型聚类 R型聚类

文章目录一、K均值二、Q型聚类三、R型聚类聚类三种方法&#xff1a; 【说明】 1、三种方式输入矩阵行为个案&#xff0c;列为变量 量纲不同需要预处理&#xff0c;一般使用zscore() zscore()标准化为对每一列操作减去均值除以标准差 2、k均值需要自己确定k取值。Q、R型聚类需要…

Echarts图表自适应?你可以这样做

一、图表变形 使用 Echarts 绘制图表时&#xff0c;可能会遇到变形的问题。如下图&#xff1a; 其原因是 Echarts 在初始化实例的时候&#xff0c;对应 dom 元素的宽高还没有确定。 解决方案也很简单&#xff1a; 监听对应 dom 元素&#xff0c;如果大小发生变化&#xff0c;调…

改哭了,终于解决了Cannot read properties of undefined (reading ‘parseComponent‘)

Vue中eslint报错的修改&#xff0c;绝对有效&#xff01;&#xff01;&#xff01; Syntax Error: TypeError: Cannot read properties of undefined (reading parseComponent)You may use special comments to disable some warnings. Use // eslint-disable-next-line to ig…

Vue-Router的使用

目录 一、什么是路由&#xff1f; 二、在vue中如何使用路由&#xff1f; 三、vue-router的搭建 3.1 什么是hash和history模式&#xff1f; 四、路由的基本使用 2.1 router-view 2.1.1 命名视图 2.2 router-link 三、路由的参数 3.1 query参数 3.2 params参数 四、编…

4.网络爬虫—Post请求(实战演示)

网络爬虫—Post请求实战演示POST请求GET请求POST请求和GET请求的区别获取二进制数据爬[百度官网](https://www.baidu.com/)logo实战发送post请求百度翻译实战使用session发送请求模拟登录17k小说网常见问题前言&#xff1a; &#x1f4dd;​&#x1f4dd;​此专栏文章是专门针对…

uniapp 开发H5打包微信小程序样式失效的解决之道

使用uniapp开发H5&#xff0c;样式已经按照UI设计稿全部实现。但是在打包微信小程序调试的时候&#xff0c;遇到很多样式失效的问题。问了度娘很久&#xff0c;并没有完全解决样式失效的问题。于是自己按照从度娘上查到的方法去进行组合尝试&#xff0c;最终样式失效问题得到了…

vue项目 移动端适配——rem

做移动端的适配我们就是要考虑&#xff0c;对于不同大小的手机屏幕&#xff0c;怎么动态改变页面布局中所有盒子的宽度高度、字体大小等。 这个问题我们可以使用相对单位rem。 那么什么是 rem&#xff1f; rem&#xff08;font size of the root element&#xff09;是指相对…

VUE项目中调用高德地图

前言 相信大家或多或少都接触过在大屏的项目&#xff0c;在大屏项目中除了用到了echarts中的行政地图&#xff0c;街道地图也是很常见的&#xff0c;今天主要来说一下在vue中调用高德地图遇到的一些问题&#x1f92a;。 申请高德key 无论我们使用任何方式调用高德地图都需要…

导航栏不变,切换局部页面的方法

前言&#xff1a; 在写项目的时候&#xff0c;一直让我很头疼的问题&#xff0c;就是我的项目的导航栏不需要改变&#xff0c;但是点击导航栏需要切换页面。接下来我总结一下我能够想到的方法! 目录&#xff1a; 1.iframe标签嵌入页面自定义属性 2.利用display属性和排他思想…

【Anime.js】——JavaScript动画库:Anime.js——学习笔记

目录 一、搭建开发环境 二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴 五、控制、回调与助手 一、控制 二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义&#xff1a; anime.js 是一个简便的J…

Java二次开发海康SDK-对接门禁机

写在最前SDK版本&#xff1a;CH-HCNetSDKV6.1.6.45_build20210302_win64参考文档&#xff1a;海康SDK使用手册_V6.1对接测试设备型号&#xff1a;DS-K1T671M设备序列号&#xff1a;E50247795业务目标使用门禁设备实现对人脸的抓拍&#xff0c;将抓拍的人脸与其对应的数据进行上…

用Pytorch构建一个喵咪识别模型

本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 目录 一、前言 二、问题阐述及理论流程 2.1问题阐述 2.2猫咪图片识别原理 三、用PyTorch 实现 3.1PyTorch介绍 3.2PyTorch 构建模型的五要素 3.3PyTorch 实现的步骤 3.3.…

重新学习Vue,了解一下Vue的故事和核心特点

vueVue的由来Vue是什么1.响应的数据绑定2.可组合视图组件3.虚拟DOM4.MVVM模式5.声明式渲染总结Vue的由来 大家应该都知道VUE是尤大大尤雨溪开发出来的&#xff0c;尤大大专业不是计算机&#xff0c;而是室内艺术专业。后来尤大大到帕森斯设计学院进修艺术研究硕士学位&#xf…

猿创征文|【HTML】标签学习之路

&#x1f496;目录 一、HTML语法规范 1.基本语法概述 2.标签关系 二、HTML基本结构标签 1.第一个HTML页面 2.HTML基本结构标签总结 一、HTML语法规范 1.基本语法概述 html是由尖括号包围的关键词&#xff0c;列如&#xff1a;<html>。html标签通常是成对出现的&a…

前端微信小程序开发基础

文章参考&#xff08;黑马小程序教学视频&#xff09;仅供参考与学习 简介 小程序和普通页面开发的区别 运行环境不同 网页运行在浏览器中&#xff0c;小程序运行在微信环境中 API不同 由于运行环境不同&#xff0c;所以小程序中&#xff0c;无法调用DOM和BOM的API. 但是…

如何使用 CSS 使表格居中(快速指南)

在网页设计中使用表格有一段有趣的历史。在采用 CSS 之前&#xff0c;表格不仅仅用于以传统方式显示表格数据练习列表&#xff0c;而是更常用于控制完整的页面布局。 那时&#xff0c;HTML 表格用于定义网页的结构和视觉外观&#xff0c;其中表格的位置可以直接在 HTML 中指定…

input详解之文件上传

input 全部类型 常用的并且能为大多数浏览器所识别的类型大概有&#xff1a;text、password、number、button、reset、submit、hidden、radio、checkbox、file、image、color、range、date、month、week、time、datetime-local。 1、一般类型 <!-- text类型 文本框 默认…

Vue2 Element DatePicker组件设置默认日期、控制日期范围

文章目录前言一、设置默认日期1.不要用placeholder2.设置动态的默认日期二、限制日期选取1.方案2.举例总结前言 以前都是做练习, 上周拿到这个任务直接被卡住… 一、设置默认日期 1.不要用placeholder 依然不使用placeholder属性, 在v-model初始就绑定了时间的情况下, 组件可…

vue导入处理Excel表格详解

目录1. 前言2.vue导入Excel表格2.1 使用ElementUI中的upload组件2.2 使用input文件上传3. 总体代码与效果4. 总结1. 前言 最近遇到前端导入并处理excel表格的情况&#xff0c;趁此机会刚好研究一下vue导入并处理excel数据&#xff1b;当然自己手撸一个工具没有那么多时间&#…

vue3 使用tinymce编辑器实现单/多图片上传,附件上传,视频上传

安装: 我用的是tinymce最新版本v6 npm install tinymce -S npm install tinymce/tinymce-vue -S 2.安装语言包:Language Packages | Trusted Rich Text Editor | TinyMCE 3.在项目public文件夹下--新建tinymce文件夹,安装包解压在该文件夹下 封装组件TEditor.vue <templa…