Acquire

返回博客

cURL 是什么,它是什么意思?

Augustas Pelakauskas

2022-05-05

哪里都有 cURL 的身影。从汽车到蓝光播放器,几乎任何设备都要用到它。这款工具可以通过互联网协议传输任何类型的数据。

许多人想了解 cURL 是什么,如何使用 cURL,以及为什么要需要它。在这篇文章中,我们会详细介绍这款命令行工具,它的开发缘起和发展历史,并举例说明它的用法。

cURL 是什么意思?

cURL 意思是客户端的 URL 工具,是用于在服务器之间传输数据的开源命令行工具和跨平台的库(libcurl),几乎所有新操作系统中都有它。cURL 用途广泛,可以在任何地方接收和发送基于互联网协议的数据。

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 的客户端而弃用之前的名字,更名为 url2.0。几度更新后,于 1998 年 3 月30 日,再次更名为如今大名鼎鼎的 cURL3.0。

在 cURL 之前也有过类似的工具 wget。详情我们就不赘述了,wget 和 cURL 的主要差别就在于下载能力,wget 可以断点续传。 

cURL 有什么用途?

cURL 的作用就是通过互联网协议传输数据。它的用途仅限于此,甚至不处理传输的数据,只起传输作用。 

cURL 可用于调试,例如:使用 “curl -v https://oxylabs.cn” 就会输出冗长的连接请求信息,包括用户代理、握手数据、端口等详细信息。

cURL 命令及其说明可谓不胜枚举。所幸可以通过 “curl-help” 选项可以查看所有可能性和简短备注列表。但如果缺乏对 cURL 用法的了解,这个列表帮助不大。

cURL 怎么用?

使用相对较新操作系统的用户,几乎人人都可能在使用 cURL,因为它是 Windows、MacOS 和大多数 Linux 系统的默认配置。如果是较老的操作系统,例如 Windows 10 以前的系统,可能需要下载并安装 cURL。

要使用 cURL,只需打开终端输入 “curl” 即可。正常情况下,系统会调出 “curl –help”。正如前文提到过的,“Help” 会列出所有可能的命令。通过添加列出的参数并输入 URL 便可以组成 cURL 命令。参数可短(例如 -o、-L 等)可长(例如 –verbose)。这些参数可以通过使用单破折号或双破折号来加以区别。

cURL 的使用

发送请求

cURL 是一款基于互联网协议数据传输的强大工具。cURL 的用法不胜枚举,但我们可以介绍几个常见用例。

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

curl -d “name=something&value=somethingelse” https://jsonplaceholder.typicode.com/posts/

cURL 发送请求后会返回如下信息:

{
  "name": "something",
  "value": "somethingelse",
  "id": 101
}

它们是这样运作的:

  • curl 启动命令

  • -d 参数用于发送 POST 请求的“数据”

  • 双引号(“”)用于内容声明注意,有的操作系统仅接受单引号,有的则接受双引号。

  • 最后是目标。URL 语法必须准确,因为 cURL 默认不会自动跟随重定向。

我们也可以以 JSON 格式发送 POST 请求,但必须提供更多选项才能告诉服务器我们在发送 JSON。cURL 几乎不会为用户解读,而只是发送 application/text Content-Type 标头,因此,我们必须添加标头 Content-Type: application/json ourselves。

curl -H "Content-Type: application/json" --data "{\"data\":\"some data\"}"  https://jsonplaceholder.typicode.com/posts/

跟随重定向

cURL 默认不会自动跟随重定向。如果我们想要它跟随重定向,必须额外添加参数。请看下面的例子:

curl https://google.com

我们的浏览器可以自动重定向,因此我们可能不会注意到这样的请求有什么问题。但是,如果我们发送 cURL 来跟随重定向,就会收到提示:在尝试连接时文档已被移动。要让 cURL 跟随重定向,必须添加特殊参数 “-L”(参数区分大小写)。

curl -L https://google.com

现在我们应该可以收到来自 Google 返回的常规结果,因为 cURL 跟随从 https://google.com 到 https://www.google.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 都是一款不可或缺的工具包。坦率地说,解释所有的 cURL 用例可能要花很长时间。

如需深入了解其他有趣的主题,例如什么是最常见的 HTTP 标头正向代理与反向代理的区别等,欢迎浏览我们的博客,有许多有意思的博文等着您来探索!

关于作者

Augustas Pelakauskas

文案

Augustas Pelakauskas 在 Oxylabs 担任一名文案策划人。拥有艺术家庭背景,他全身心地投入到各种创意项目中 - 最近的他都在写作。验证了他在自由新闻领域的能力后,他转到了科技内容创作。闲暇时,他喜欢阳光明媚的户外活动和运动康乐。事实证明,自行车则是他的第三个好朋友。

Oxylabs博客上的所有信息均按“原样”提供,仅供参考。对于您使用Oxylabs博客中包含的任何信息或其中可能链接的任何第三方网站中包含的任何信息,我们不作任何陈述,亦不承担任何责任。在从事任何类型的抓取活动之前,请咨询您的法律顾问,并仔细阅读特定网站的服务条款或取得抓取许可。

选择Oxylabs®,业务更上一层楼


联系我们

经过认证的数据中心和上游提供商

关注我们

  • we chat qr code

    微信公众号

    微信号

    oxychina


隐私政策

oxylabs.cn© 2022 保留所有权利©