您当前的位置:首页 > 电脑百科 > 网络技术 > 网络软件

命令行http调试利器curl如何使用?

时间:2022-12-19 16:23:16  来源:今日头条  作者:互联网蚂蚁哥

curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。

crul的官方网站是 HTTPS://curl.haxx.se/ , 我们可以通过该网站获取此工具的最新版本,还有最全面的使用方法。

从官网可以知道,curl支持30多种类型的传输方式,例如:FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Te.NET and TFTP等,这当中包含多种协议。最常使用的有FILE、FTP、HTTP、HTTPS等协议。

对于运维人员来说,在我们探测远程服务的时候,比如http传输,SOCKET连接时,这个工具能非常方便的作为验证工具和测试工具。

下面看几个curl典型应用实例。

1、 仅仅显示header信息

这个用法运维人员经常使用,可以探测一个网站的header信息,例如:

[root@localhost ~]# curl -I https://www.ixdba.net HTTP/1.1 200 OK Server: Nginx/1.13.9 Date: Mon, 04 Mar 2019 08:11:31 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive

通过curl的“-I”(大写的i)参数可以获取指定网站的header头信息,可以发现上面这个网站可以正常访问(200状态码),同时此网站的web服务器是nginx/1.13.9,并且还开启了keep-alive。这些信息都是web运维必须要具备的。

2、显示http状态代码

http状态码对web运维来讲,非常重要,在对web页面进行监控的时候,会经常通过状态码来判断网页的状态,如果返回状态码为非200状态,那么则认为网页异常。要获取网页状态码,除了上面的“-I”参数外,还有更专业的方法,那就是使用 “-s”和“-o”参数组合,最后使用“-w”参数,可以这样使用:


[root@localhost ~]#curl -s -o /dev/null -w %{http_code}"n" http://www.bAIdu.com 200

其中:

 

? “-s”: 表示安静模式,不输出错误,或者进度条之类的。 ? “-o”: 表示指定输出结果到某个文件,不指定的话默认是终端。这里是将结果写入空设备中。 ? “-w”表示输出一些定义的元数据,这里输出的是%{http_code},即http状态码。除去http_code,还有http_connect、time_total、time_connect、time_Appconnect、time_redirect、size_download 、size_upload 、content_type、ssl_verify_result等变量可供选择。输出变量需要按照%{variable_name}的格式。 ? “n”表示换行

 

再来看个例子,通过http协议访问一个网站,命令如下:

[root@localhost ~]#curl -s -o /dev/null -w %{http_code}" "%{time_total}" "%{redirect_url}"n" http://www.ixdba.net 301 0.141 https://www.ixdba.net/

可以看到输出结果有个301,这表示当通过http访问此网站的时候,自动跳转到了https,执行了301定向操作,所以状态码变成了301,第二个输出“0.141”是变量“%{time_total}”解析出的结果,代表总时间,按秒计。精确到小数点后三位,最后的“https://www.ixdba.net/” 是"%{redirect_url}"变量的输出结果,代表跳转后的url。

3、使用curl实现url地址重定向(自动跳转)

默认情况下CURL不会发送HTTP Location headers(重定向),但使用了“-L”选项后,当一个被请求页面移动到另一个站点时,就会发送一个HTTP Loaction header作为请求,然后将请求重定向到新的地址上。例如:访问http://www.ixdba.net 时,会自动将地址重定向到 https://www.ixdba.net 上。

[root@localhost ~]# curl -L -I http://www.ixdba.net HTTP/1.1 301 Moved Permanently Server: nginx/1.13.9 Date: Fri, 01 Mar 2019 07:25:57 GMT Content-Type: text/html Content-Length: 185 Connection: keep-alive Location: https://www.ixdba.net/ Strict-Transport-Security: max-age=31536000; includeSubDomains; preload HTTP/1.1 200 OK Server: nginx/1.13.9 Date: Fri, 01 Mar 2019 07:25:58 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive

输出有两个部分,可以看到有自动的跳转,这是因为使用了-L参数,curl就会跳转到新的网址。

4、抓取网页内容,并保存到本地

curl也能下载文件,达到跟wget相同的功能,例如将一个url文件保存到本地,保存原始文件名,可以通过“-O”参数实现:

[root@localhost ~]# curl -O https://www.ixdba.net/archives/2017/06/653.htm

但是有时候url中的文件名不固定或者想下载后重命名,可以通过“-o”实现,例如将url中的文件下载到本地,并命名为test.html,命令如下:

[root@localhost ~]#curl -o test.html https://www.ixdba.net/archives/2017/06/653.htm

这里面涉及两个curl参数,分别是:

 

? -o/--output 将文件保存为命令行中指定的文件名的文件中 ? -O/--remote-name 使用URL中默认的文件名保存文件到本地

 

5、通过curl下载文件并开启断点续传

curl也可以实现下载大文件,并实现断点续传,先看下面这个例子,如下图所示:


 

可以看到,curl下载文件其实比wget更好用,可以看到下载文件时的各个属性,文件总大小,已下载大小,下载耗时多少,下载速度多少等等。

在下载一会后,执行ctrl+c,中断下载,接着再次执行curl下载,看看是否能够实现断点续传功能,如下图所示:


 

这里使用了三个参数:

-C/--continue-at : 断点续转,注意断点续传的参数是-C, 要自动续传的话要使用 "-C -", 否则需要手工指定断点的字节位置。这个特别注意。

6、对CURL的最大网络使用带宽进行限速

与wget类似,curl在下载文件时也会占满系统带宽,这样一来,可能会影响线上业务系统的正常运行,因此,限速也是要做的,可以通过“--limit-rate”选项,实现对curl下载网速限制,来看一个例子:


 

这是限制下载速度为2M,看最下面的下载速度刚好是2048k左右,实现了带宽限速。

7、通过CURL访问需要授权的页面

在访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权

[root@localhost ~]# curl -u username:password URL

上面的做法很明显,存在密码泄露的风险,通常的做法是在命令行只输入用户名,之后会提示输入密码,这样可以保证在查看历史记录时不会将密码泄露。

[root@localhost ~]# curl -u username URL

8、通过curl从FTP服务器下载、上传文件

CURL不但支持http,同样也支持FTP下载,若在url中指定的是某个文件路径而非具体的某个要下载的文件名,CURL则会列出该目录下的所有文件名而并非下载该目录下的所有文件

例如:列出public_html下的所有文件夹和文件

curl -u ftpuser:ftppass ftp://ftp_server/public_html/

看下面这个例子,如下图所示:


 

要下载一个文件,可以执行如下命令:

curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/getssl.php

例如下图操作:


 

除了下载操作,curl也可以将文件上传到FTP服务器上,通过“-T”选项可将指定的本地文件上传到FTP服务器上。例如:

将myfile.txt文件上传到服务器:

curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

看下图操作:


 

curl也可以同时上传多个文件,方法如下:

curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

curl还可以从标准输入获取内容保存到服务器指定的文件中,方法如下:

curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

9、CURL使用SSL证书访问HTTPS

有时候在通过curl下载基于https的链接文件时,会提示ssl认证失败,或者ssl不可信,此时可以使用 -k 或者“-insecure”选项,来忽略签名认证的警告。 这样就可以让curl命令执行不安全的SSL连接,进而去获取数据。
命令使用示例如下:

curl -k https://abc.com curl --insecure https://www.tttao.com



Tags:curl   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux技巧:使用cURL将输出保存到文件
cURL是一个功能强大的命令行工具,广泛应用于Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,并且可以将输出轻松保存到文件,从而满足用户在不同场景下的数据...【详细内容】
2023-11-27  Search: curl  点击:(169)  评论:(0)  加入收藏
Linux系统curl命令使用方法汇总
yum install -y libcurl-dev上传文件curl -F "file=@D:/list.txt" "http://43.254.156.147:10001/files?username=tipdm&course=hadoop%E5%9F%BA%E7%A1%80&chart=hadoop&pat...【详细内容】
2023-07-27  Search: curl  点击:(331)  评论:(0)  加入收藏
如何通过Curl方式进行ElasticSearch增删改查
关于ElasticSearch增删改查的方法有很多,使用curl操作命令总结如下,如有需要可以点击收藏。1、ElasticSearch新增数据如果进行一个类似于SQL的 insert的操作insert into users...【详细内容】
2023-02-27  Search: curl  点击:(390)  评论:(0)  加入收藏
命令行http调试利器curl如何使用?
curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,顾名思义,curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。crul的官方网站是 H...【详细内容】
2022-12-19  Search: curl  点击:(273)  评论:(0)  加入收藏
Mac 终端curl请求接口如何格式化输出json
开发的同学肯定会遇到过通过自带的终端curl请求接口时接口返回的数据格式总是混乱的,如下图这样:常规curl请求可以看到返回数据没有格式化输出看不出数据的层级结构,可以说是非...【详细内容】
2022-09-27  Search: curl  点击:(723)  评论:(0)  加入收藏
curl最快速的访问调用API接口,测试API接口的命令行工具
首先,curl在windows和Mac上都可以直接打开命令行运行,要访问接口也很简单,我们拿三个例子来说明一下:一、Get接口,直接访问接口只要象这样调用: 以上是通过WINDOWS,执行的结果,可以...【详细内容】
2022-03-15  Search: curl  点击:(1776)  评论:(0)  加入收藏
使用 curl 从命令行访问互联网
要在不使用图形界面的情况下从互联网上获取所需的信息,curl 是一种快速有效的方法。• 来源:linux.cn • 作者:Seth Kenlon • 译者:MjSeven •(本文字数:4904,阅...【详细内容】
2021-04-01  Search: curl  点击:(471)  评论:(0)  加入收藏
PHP Curl的简单使用
CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到curl向其他系统api访问。使用要想使用CURL,大致需要如下流程: 初...【详细内容】
2020-11-20  Search: curl  点击:(325)  评论:(0)  加入收藏
3分钟短文 | Linux 使用curl发起post请求的4个常用方式
引言cURL是一种命令行实用程序,用于使用一种受支持的协议,从远程服务器传输数据,或将数据传输到远程服务器。默认情况下,已安装在macOS和大多数Linux发行版上。 开发人员可以使...【详细内容】
2020-07-26  Search: curl  点击:(790)  评论:(0)  加入收藏
curl协议不支持https该如何解决?
概述最近在其中一台服务器碰到关于curl的报错:curl: (1) Protocol "https" not supported or disabled in libcurl,这里顺便记录下解决过程和思路~ 1、查看当前curl支持哪些协...【详细内容】
2020-06-26  Search: curl  点击:(1343)  评论:(0)  加入收藏
▌简易百科推荐
局域网限制上网软件有哪些
今天咱们继续来聊聊上网的事儿吧!企业和学校的网络管控,真是不容小觑。他们要确保网络安全和合规性,那得用上一些局域网限制上网软件。这些软件可是厉害哦!它们不仅能够掌控局域...【详细内容】
2023-12-15  网亚企业监管软件    Tags:限制上网   点击:(75)  评论:(0)  加入收藏
三款广受好评的内网监控管理软件
内网监控管理软件是一种用于监控和管理企业内部网络活动的工具。它可以帮助管理员实时监测网络流量、设备状态和用户行为,以确保网络安全和合规性。本文将从内网监控管理软件...【详细内容】
2023-11-15  洞察眼MIT系统    Tags:内网监控   点击:(167)  评论:(0)  加入收藏
推荐几个安全检测的开源系统
Security Onin系统 它的官网:https://securityonionsolutions.com/software/Security Onion是一款专为入侵检测和NSM(网络安全监控)设计的Linux发行版。它集成了日志分析、...【详细内容】
2023-09-10  安全架构  微信公众号  Tags:安全检测   点击:(230)  评论:(0)  加入收藏
一键关闭防火墙软件
作为一名电脑从业者,我有10年的经验,并熟悉Windows系统的各种设置和指令。来解决您的问题,如何关闭Windows系统的防火墙。以下是几个解决方案:一键关闭防火墙的工具包在这里:52ru...【详细内容】
2023-08-24  翰墨文化世界    Tags:防火墙   点击:(222)  评论:(0)  加入收藏
疯传全网网络10个运维巡检脚本以及使用小技巧
第1章 前言巡检脚本在网络运维中非常重要,近期客户想要一些简单的脚本实现自动化常规项的检查,本文主要介绍一些常见巡检脚本和使用方法。 第2章 脚本案例1. 网络连通性检查...【详细内容】
2023-08-23  虚拟化时代君  微信公众号  Tags:网络   点击:(318)  评论:(0)  加入收藏
分享15个网络监控神器
近年来,随着虚拟、云和边缘网络的增加,网络监控工具已经显得越来越重要。在当今大多数企业中,监控混合IT环境中的网络流量对于主动网络管理至关重要。无论是检测行为异常、占用...【详细内容】
2023-08-17  网络工程师俱乐部    Tags:网络监控   点击:(197)  评论:(0)  加入收藏
远程桌面连接出现了内部错误怎么解决?
远程桌面连接是一种非常方便的工具,可以让用户从远程访问其他计算机的桌面界面。但是,有时候在连接远程桌面时会出现内部错误,导致无法连接或者连接后无法正常使用。在本文中,我...【详细内容】
2023-05-10  RayLink    Tags:桌面连接   点击:(327)  评论:(0)  加入收藏
局域网远程桌面工具推荐
有多种软件选项适用于局域网 (LAN) 中的远程桌面,包括 微软远程桌面、Splashtop、Teamviewer 等。 以下是根据性能、安全性、价格、品牌历史和其他因素对这些软件选项进行的...【详细内容】
2023-04-28  Splashtop远程控制    Tags:远程桌面   点击:(367)  评论:(0)  加入收藏
什么是远程桌面连接?如何操作远程桌面?
随着时代越来越信息化、智能化、自动化,越来越多的企业和个人开始使用远程办公软件进行办公。其中远程桌面连接是一种非常流行的办公方式。那么,什么是远程桌面连接?如何操作...【详细内容】
2023-04-13  RayLink    Tags:远程桌面   点击:(197)  评论:(0)  加入收藏
用好你的瑞士军刀/netcat
Netcat 号称 TCP/IP 的瑞士军刀并非浪得虚名,以体积小(可执行 200KB)功能灵活而著称,在各大发行版中都默认安装,你可以用它来做很多网络相关的工作,熟练使用它可以不依靠其他工具...【详细内容】
2023-04-02  码农世界  今日头条  Tags:netcat   点击:(287)  评论:(0)  加入收藏
站内最新
站内热门
站内头条