首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cURL是什么?

cURL是什么?

原创
作者头像
用户7850017
修改2021-04-30 14:27:07
2.6K0
修改2021-04-30 14:27:07
举报

cURL应用

cURL无处不在。它几乎隐藏在所有设备中,例如汽车,蓝光播放器等。它通过互联网协议传输任意类型数据。

在本文中,我们将揭开cURL神秘命令行工具的面纱,解释它是如何成为一种通用代码的,并举例说明其用法。

cURL是什么意思?

cURL(客户端URL)是一个开放源代码的命令行工具,也是一个跨平台的库(libcurl),用于在服务器之间传输数据,并分发给几乎所有新的操作系统。cURL编程用于需要通过Internet协议发送或接收数据的几乎任何地方。

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的历史

回到90年代的黑暗时代,那时每个人仍然使用命令行工具,Daniel Sterberg希望开发一个简单的IRC脚本,该脚本可以为聊天室成员转换货币。在1997年,建立互联网协议数据传递基础的方法不多,因此Httpget(基于HTTP的传输的几百行代码)成为cURL的起源。为了纪念其基础,它率先被称为HTTPGET 1.0。

几个月后,开发出了FTP的支持,就不得不删除该名称了。现在,它被称为urlget 2.0。经过几次更新后,在1998年3月30日,名称再次更改为现在众所周知的cURL 3.0。

cURL之前其实还有相似的 wget。我们不会过多介绍细节,但是wget和cURL之间的主要区别在于它们各自的下载功能,例如前者可以从中断的传输中恢复并继续下载。

cURL的作用是什么?

cURL旨在通过互联网协议传输数据。其他所有内容均不在其范围内。它甚至不处理传输的数据,仅执行传输流程。

cURL可用于调试。例如使用“ curl -v https://oxylabs.io ”可以显示一个连接请求的详细输出,包括用户代理,握手数据,端口等详细信息。

可列出和解释的cURL命令选项太多了。幸运的是,可以使用“ curl –help”这个选项,它列出了所有curl命令行的用法,并附有简短的解释性注释。尽管这些命令行用法里没有有关如何使用cURL的相关背景知识介绍,用户也能通过列表知道一些命令行的用法。

如何使用cURL?

几乎所有具有相对较新操作系统的人都可以使用cURL,因为cURL在Windows,MacOS和大多数Linux发行版中作为默认设置提供。对于较早的系统,例如10之前的任何Windows操作系统,可能需要下载并安装cURL 。

要使用cURL,只需打开终端并输入“curl”。正常情况下,“curl -help”会自动跳出,用户可以选择是否执行“ curl –help”命令行。如前所述,“帮助”将列出所有命令可能性。

可以通过添加列出的命令行并键入URL来组合cURL命令。参数可以是短的(例如-o,-L等)或长的(例如-verbose)。这些参数通过使用单破折号或双破折号来区分。

使用cURL

发送请求

cURL是通过Internet协议进行数据传输且功能强大的工具。想要详细说明cURL能干什么并列出所有选项将是一项无法完成的任务。cURL用法多种多样,下面给大家展示一些常见的通用案例。

由于cURL最初是为HTTP开发的,因此我们可以发送所有常规请求(POST,GET,PUT等)。为了将POST请求发送到URL,使用-d(或–data)命令行。大多数网站都会拒绝未经授权的用户的此类请求,因此我们将使用虚假的API进行测试。

curl -d “name=something&value=somethingelse”

https://jsonplaceholder.typicode.com/posts/

发送这样的请求应该返回:

{

"name": "something",

"value": "somethingelse",

"id": 101

}

这里简单说下整个过程:

  • curl开始我们的命令
  • -d是POST请求的“数据”参数
  • 引号(“”)开始我们的内容声明。请注意,某些操作系统将仅接受单引号,而其他操作系统将接受双引号。
  • 最后是目的地。URL语法应始终准确,因为cURL不会自动跟随重定向。

我们也可以以JSON格式发送POST请求,但必须提供其他选项才能告诉服务器我们正在发送JSON。cURL不会代表用户做任何解释,并且会发送默认的application / text的Content-Type标头,因此我们必须自己添加标头Content-Type:application / json。

curl -H "Content-Type: application/json" --data

"{\"data\":\"some data\"}"

https://jsonplaceholder.typicode.com/posts/

跟随重定向

cURL不会自动跟随重定向。如果我们期望这样做,我们应该添加一个额外的命令行。让我们看一个例子:

curl https://baidu.com

我们的浏览器自行处理重定向,因此我们甚至可能不会注意到此类请求的问题。但是,如果我们发送cURL来完成工作,则会收到通知,说明文档在尝试连接时已被移动。以下让我们看看在win10命令提示符里直接执行以上指令所返回的结果:

我们可以看到显示的结果是302 Found,一些有经验的用户应该知道302 Found 是HTTP协议中的一个状态码(Status Code),可以简单的理解为该资源原本确实存在,但已经被临时改变了位置;或者换个说法,就是该资源临时解析到某个URL下。通常会发送Header来暂时重定向到新位置。也就是说此处没有像常规浏览器那样自动跟随重定向。因此,为了使cURL跟随重定向,我们必须添加一个特殊的参数“ -L”(参数区分大小写)。

curl -L https://baidu.com

执行的结果如下:

现在,我们应该已经从Baidu收到了常规答案,因为cURL遵循从https://baidu.com到https://www.baidu.com 的重定向。

通过代理连接

cURL可用于通过代理连接到任何目的地。与其他任何cURL语句一样,URL,语法和其他所有内容都保持不变,除了添加的参数及其属性。

curl --proxy proxyaddress:port

https://jsonplaceholder.typicode.com/ 在“ -proxy”之后输入代理和端口将通过输入的地址路径连接。代理通常需要提交详细的登录凭证来进行身份验证,用户可以通过-U参数的命令行来完成提交。

curl --proxy proxy:port -U “username:password”

https://jsonplaceholder.typicode.com/

某些网站在接受任何连接请求之前将需要进行身份验证。服务器身份验证使用类似的参数:“-u”。

curl -u username:password

https://jsonplaceholder.typicode.com/

下期我们将在文章中介绍更多有关cURL的内容。

结论

cURL是用于Internet协议传输的非常强大的工具。掌握其用法绝对不是一件容易的事情,然而它却能成为任何开发人员工具包中不可替代的工具。坦率地说,想在cURL用例上进行扩展不难,但是想要挖掘所有可能性,几乎是不可能实现的,因为涉及到的可能性太多。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档