在 Linux 中使用“Curl”命令的 15 个技巧
早在 20 世纪 90 年代中期,当互联网仍处于起步阶段时,一位名叫Daniel Stenberg的瑞典程序员启动了一个项目,该项目最终发展成为我们今天所熟知的curl。
最初,他的目标是开发一个机器人,定期从网页下载货币汇率,并向 IRC 用户提供与美元等值的瑞典克朗。
长话短说,该项目蓬勃发展,一路上增加了几个协议和功能——剩下的就是历史了。现在让我们全力以赴,学习如何在 Linux 中使用 curl 传输数据等!
我们为您整理了以下 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.com和http://mysite.com下载info.html和about.html 。
$ 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 用户:密码。
7. 查询 HTTP 标头
HTTP标头允许远程 Web 服务器随实际请求一起发送有关其自身的其他信息。这为客户端提供了有关如何处理请求的详细信息。
要从网站查询 HTTP 标头,请执行以下操作:
$ curl -I www.example.com
您的浏览器的开发人员工具中也提供了此信息。
8. 发出带参数的 POST 请求
以下命令将firstName和lastName参数及其对应的值发送到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 版本默认使用什么,稍后让我们将其更改为“我是一个新的 Web 浏览器”:
$ 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 从 localhost 请求站点,而不是使用 DNS 或/etc/hosts文件。
15.限制下载速率
为了防止 curl 占用大量带宽,您可以按如下方式将下载速率限制为100 KB/s 。
$ curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
概括
在本文中,我们分享了 curl 的起源简史,并通过 15 个实际示例解释了如何使用它。
您是否知道我们在本文中可能遗漏的其他 curl 命令?欢迎在评论中与我们的社区分享!此外,如果您有任何问题,请随时告诉我们。我们期待您的回复!