通过这些示例学习在 Linux 中使用 CURL 命令

什么是卷曲?

卷曲 是一种数据传输工具。 它也可用作开发人员的库和基于终端的用例的 CLI。 两者内部都有相同的引擎(事实是 CLI 工具只是在后台使用库的程序)。

CURL 适用于您可能使用过的所有协议。 头顶 这个网站 检查 CURL 是否适用于您的目标协议。

CURL 能做什么?

嗯……与数据传输有关的一切。 每个人都必须使用浏览器。 即使是现在,您也正在通过浏览器阅读这篇文章。 浏览器做什么,它请求一个页面并将其作为响应。 它可以写入和读取cookies。 然后渲染(显示内容、图像和执行 JS 脚本)它。

CURL 可以做除了最后一部分渲染之外的所有浏览器,因为它与数据传输无关。

作为总结,CURL 可以下载 HTML 页面,填写 HTML 表单并提交它们,从 FTP/HTTP 服务器下载文件并将文件上传到相同的服务器和读/写 cookie。

这使它成为用于脚本、调试和取证分析等的优秀工具。

卷曲命令示例

让我们看看你能用 Curl 做什么。

1. 从服务器获取响应

来自服务器的一切都是对请求的响应。 因此,获取 HTML 页面与下载文件相同。

从以下位置获取 HTML 响应 https://info.cern.c,

curl https://info.cern.ch/

从服务器获取帖子列表作为响应( https://jsonplaceholder.typicode.com/posts),

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

由于我们知道如何从服务器获取响应,因此您可以下载文件(例如 Google 徽标)。

curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

上面的命令将转储您无法在终端中查看的二进制图像数据。 您需要保存它们,然后使用照片查看器查看它们。

请注意,可以将各种选项标志放置在命令的任何位置,而不是严格排序。 因此,如果您在示例开头有标志时将任何选项放在最后,请不要担心。

2. Save 具有默认文件名的文件

互联网上提供的每个文件都有一个文件名。 要使用与下载的文件名相同的文件名,请使用 -O 标志。

curl -O https://www.google.com/robots.txt

3. Save 具有自定义名称的文件

要使用您自己的自定义名称保存文件名,请使用 -o 标志,后跟(严格)自定义名称。

curl -O https://www.google.com/robots.txt googleRobots.txt

4.下载多个文件

要下载多个文件,请用空格分隔它们。

curl url1 url2 url3

如果要对所有 URL 使用 -O 标志,请使用

curl url1 url2 url3 -O -O -O 

应该对任何标志执行相同的解决方法。 这是因为某个标志的第一次出现是针对第一个 URL,第二个标志是针对第二个 URL,依此类推。

5.下载一系列文件

curl 具有从服务器下载一系列文件的内置功能。 这可以从以下说明 example.

curl https://www.google.com/logo/logo[1-9].png

上面的命令从 logo1.png、logo2.png、logo3.png 和 logo9.png 下载文件。

6. 仅下载最新的文件

仅当文件的修改时间晚于给定时间时才下载文件。

curl url -z "DD MMM YY MM:HH:SS"

7. 继续下载

如果您已经部分传输了文件,则可以使用 -C 标志恢复传输。 需要继续传输的偏移量应作为参数传递给 -C 标志。

curl -C 1024 https://seeni.linuxhandbook.org/files/largeFile.mpv -O

8.上传文件

要将文件上传到服务器,需要使用 -T 标志,后跟本地系统上的文件路径。

curl -T uploadFile.txt https://upload.linuxhandbook.org/files

9. 删除文件

要删除服务器中名为 deleteFile.txt 的文件,可以使用 -X 标志,该标志适用于任何 HTTP 动词/方法(如 GET、POST、PUT、DELETE、PATCH)。 如果不是所有高级 HTTP 方法,大多数 FTP 服务器都会配置 DELETE 方法。

curl -X DELETE https://upload.linuxhandbook.org/files/deleteFile.txt

您也可以修改上述命令,让任何 HTTP 方法执行相应的任务。 例如,如果您的服务器允许 TRUNCATE 方法(这是虚构的 HTTP 方法,不是标准的方法),它只删除文件中的内容而不是文件,则可以使用类似于以下命令的命令。

curl -X  TRUNCATE https://upload.linuxhandbook.org/files/mysql.dump

以上是主要用途 curl. 但是可能需要解决一些困难,例如重定向、用户身份验证、SSL 证书等,我们可以称它们为附加组件,因为它们只是可选的,但对于某些目的仍然至关重要。 让我们看看其中一些插件以及如何处理它 curl 在下一节中。

10. 避免重定向

当您请求 https://www.google.com 时,只会为您提供区域页面,例如 www.google.co.in。 这是在重定向的帮助下完成的(状态代码在 300-399 范围内的 HTTP 数据包)。

您可以使用选项 L 避免重定向。

curl -L  https://www.google.com

11. 认证

当服务器配置为仅为具有凭据的某些个人提供服务时,将为他们提供用户名和密码。 可以在 -u 标志的帮助下进行登录。

curl -u username:password https://seeni.linuxhandbook.org/files/tasks.txt

12.限制数据传输

如果要施加数据传输限制,请使用 –limit-rate 标志。 以下命令尝试下载速率限制为 10K 的文件。

curl --limit-rate 10K https://seeni.linuxhandbook.org/files/logoDetails.tgz

13. 显示/隐藏传输状态

如果响应是从终端重定向的,例如下载、上传,则 curl 自动显示传输的状态/进度表。

如果您不想查看进度表,只需在命令后面附加 -s 标志。 对于针对终端的响应,将不会显示进度。

14. 忽略 SSL 证书

你还记得访问某些网站需要给安全证书例外的情况吗? 如果您信任来源并且想要进行数据传输,则可以使用 -k 标志忽略 SSL 证书验证。

curl -k https://notSoSecure.org/files/logoDetails.tgz

15. 获取标题信息

要显示标题信息以及传输的数据,请使用 -i 标志。

curl -i https://www.google.com/robots.txt

16. 只获取头信息

如果您只想要标题而不想要数据,请使用 -I 标志

curl -I https://www.google.com/robots.txt

17.更改用户代理

一些网站和服务器不允许某些类型的设备访问他们的系统。 但是他们怎么知道我们正在使用一种特定的设备呢? 这是由于 User-Agent HTTP 标头字段。 我们可以使用 -A 标志更改此用户代理。

curl -A "Mozilla FireFox(42.0)" https://notAllowedForCLI.sites.org/randomFile.png

18. 向服务器发送数据

如果服务器需要一些数据,例如令牌或 API 密钥,请使用 -d 标志发送数据。 需要发送的数据应该跟在命令中的标志后面。 可以使用“&”来组合多个数据。 这通常由浏览器中的 GET 和 POST 请求完成。 这是您发送表单信息的方式之一。

curl -d "token=34343abvfgh&name="seeni"" https://api.restful.org/getcontent

19. 将 Cookie 写入文件

Cookie 是一些允许使用无状态 HTTP 协议维护会话的小信息。 如果您想了解更多关于 Cookie 的信息,请参阅此 很好的资源.

要将 cookie 写入文件,应使用 -c 标志后跟 cookie 文件名。

curl -c googleCookie.txt https://www.google.com/files

20. 从文件中读取 Cookie

要从文件中读取 cookie,可以使用 -b 标志后跟 cookie 文件名。

curl -b googleCookie.txt https://www.google.com/files

请注意, -b 标志仅从文件中读取 cookie。 因此,如果服务器重新发送另一个 cookie,您可能需要使用 -c 选项来写入它们。

21. 开始一个新的会话

如果要通过丢弃 cookie 来启动新会话,请使用 -j 标志。 即使您使用 -b 标志提供了要读取的 cookie 文件,它也会启动一个新会话。

curl -b googleCookie.txt https://www.google.com/files -j

恭喜! 你做到了最后。 如果您觉得这篇文章有用,请与您的朋友分享并在社交媒体上关注我们。 如果您对本文或任何其他主题有任何建议,请随时将它们放在下面。