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