网站搜索

关于如何在 Linux 中使用“Curl”命令的 15 个技巧


早在 1990 年代中期,当互联网还处于起步阶段时,一位名叫 Daniel Stenberg 的瑞典程序员启动了一个项目,该项目最终发展成为我们今天所知的 curl

最初,他的目标是开发一个机器人,定期从网页下载货币汇率,并向 IRC 用户提供等值的瑞典克朗美元。

长话短说,该项目蓬勃发展,一路上添加了多个协议和功能 - 剩下的就是历史了。现在让我们一起来学习如何使用curl在Linux中传输数据等等!

我们为您整理了以下 15 个curl 命令列表。

1.查看curl版本

-V--version 选项不仅会返回版本,还会返回当前版本中支持的协议和功能。

curl --version

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

2. 下载文件

如果要下载文件,可以将 curl-O-o 选项一起使用。前者会将文件保存在当前工作目录中,并使用与远程位置相同的名称,而后者允许您指定不同的文件名和/或位置。

curl -O http://yourdomain.com/yourfile.tar.gz # Save as yourfile.tar.gz
curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz # Save as newfile.tar.gz

3. 恢复中断的下载

如果下载由于某种原因中断(例如,使用 Ctrl + c),您可以非常轻松地恢复下载。使用 -C –(破折号 C,空格破折号)告诉curl 从中断处开始恢复下载。

curl -C - -O http://yourdomain.com/yourfile.tar.gz

4.下载多个文件

使用以下命令,您将从 http://yoursite.comhttp://yoursite.com 下载 info.htmlabout.html /mysite.com,一口气分别。

curl -O http://yoursite.com/info.html -O http://mysite.com/about.html 

5. 从文件下载 URL

如果将 curl 与 xargs 结合使用,则可以从文件中的 URL 列表下载文件。

xargs -n 1 curl -O < listurls.txt

6. 使用带或不带身份验证的代理

如果您位于侦听 proxy.yourdomain.com 端口 8080 的代理服务器后面,请执行此操作。

curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz

如果您的代理不需要身份验证,您可以跳过-U user:password

7. 查询HTTP标头

HTTP 标头允许远程 Web 服务器随实际请求一起发送有关自身的附加信息。这为客户端提供了有关如何处理请求的详细信息。

要从网站查询 HTTP 标头,请执行以下操作:

curl -I linux-console.net

此信息也可以在浏览器的开发人员工具中找到。

8. 发出带参数的 POST 请求

以下命令会将 firstNamelastName 参数及其相应的值发送到 https://yourdomain.com/info.php

curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php

您可以使用此技巧来模拟常规 HTML 表单的行为。

9. 在有或没有身份验证的情况下从 FTP 服务器下载文件

如果远程 FTP 服务器期望在 ftp://yourftpserver 处建立连接,则以下命令将在当前工作目录中下载 yourfile.tar.gz

curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz 

如果 FTP 服务器允许匿名登录,您可以跳过 -u 用户名:密码

10. 在有或没有身份验证的情况下将文件上传到 FTP 服务器

要使用curl将名为mylocalfile.tar.gz的本地文件上传到ftp://yourftpserver,请执行以下操作:

curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver

11.指定用户代理

用户代理是与HTTP请求一起发送的信息的一部分。这表明客户端使用哪个浏览器发出请求。让我们看看当前的curl版本默认使用什么,稍后将其更改为“我是新的网络浏览器”:

curl -I http://localhost --user-agent "I am a new web browser"

12. 存储网站 Cookie

想要查看当您浏览 https://www.cnn.com 时哪些 Cookie 被下载到您的计算机上?使用以下命令将它们保存到cnncookies.txt。然后您可以使用 cat 命令来查看该文件。

curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O

13. 发送网站 Cookie

您可以在对同一站点的后续请求中使用上一篇技巧中检索到的 cookie。

curl --cookie cnncookies.txt https://www.cnn.com

14.修改名称解析

如果您是一名 Web 开发人员,并且想要在上线之前测试 yourdomain.com 的本地版本,则可以使用curl 解析 http://www.yourdomain.com > 到你的本地主机,如下所示:

curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/

因此,对http://www.yourdomain.com的查询将告诉curl从本地主机请求站点,而不是使用DNS或/etc/hosts文件。

15. 限制下载速率

为了防止curl占用您的带宽,您可以将下载速率限制为100 KB/s,如下所示。

curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
概括

在这篇文章中,我们分享了curl的起源简史,并通过15个实际示例解释了如何使用它。

您知道我们在本文中可能遗漏的任何其他curl 命令吗?请随时在评论中与我们的社区分享!另外,如果您有疑问,请随时告诉我们。我们期待您的回音!