网站搜索

Linux中的Curl命令【21个实例】


了解有关在 Linux 中使用 Curl 命令的一些基本提示和专业提示和技巧。

什么是卷曲?

CURL 是一种数据传输工具。它还可以作为开发人员的库和基于终端的用例的 CLI 提供。两者内部都有相同的引擎(事实上,CLI 工具只是在幕后使用该库的程序)。

CURL 适用于您可能使用过的每个协议。请访问此站点检查 CURL 是否适用于您的目标协议。

CURL 能做什么?

嗯……与数据传输相关的一切。想必大家都用过浏览器。即使现在,您仍在通过浏览器阅读本文。浏览器的作用是请求一个页面并获取它作为响应。它可以写入和读取cookie。然后渲染(显示内容、图像并执行 JS 脚本)。

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

总而言之,CURL 可以下载 HTML 页面、填写 HTML 表单并提交它们、从 FTP/HTTP 服务器下载文件并将文件上传到同一服务器以及读取/写入 cookie。

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

卷曲命令示例

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

1. 获取服务器响应

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

要从 http://info.cern.c 获取 HTML 响应,

curl http://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. 使用默认文件名保存文件

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

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

3. 使用自定义名称保存文件

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

curl -O http://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 具有从服务器下载一系列文件的内置功能。这可以从下面的例子来说明。

curl http://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 http://seeni.linux-console.org/files/largeFile.mpv -O

8. 上传文件

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

curl -T uploadFile.txt http://upload.linux-console.org/files

9. 删除文件

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

curl -X DELETE http://upload.linux-console.org/files/deleteFile.txt

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

curl -X  TRUNCATE http://upload.linux-console.org/files/mysql.dump

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

10.避免重定向

当您请求 http://www.google.com 时,您将仅获得区域页面,例如 www.google.co.in。这是通过重定向(状态代码在 300-399 范围内的 HTTP 数据包)的帮助完成的。

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

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

11. 认证

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

curl -u username:password http://seeni.linux-console.org/files/tasks.txt

12.限制数据传输

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

curl --limit-rate 10K http://seeni.linux-console.org/files/logoDetails.tgz

13. 显示/隐藏传输状态

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

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

14.忽略SSL证书

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

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

15. 获取标头信息

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

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

16. 仅获取标头信息

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

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

17. 更改用户代理

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

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

18. 向服务器发送数据

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

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

19. 将 Cookie 写入文件

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

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

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

20. 从文件中读取 Cookie

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

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

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

21. 开始一个新会话

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

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

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

相关文章: