简单介绍
你听说过curl吗?它是一个超好用的命令行工具,主要用来跟网站服务器打交道。说白了就是一个在命令行里发送网络请求的工具。虽然现在很多人喜欢用Postman这种图形界面的工具,但是相信我,一旦你熟悉了curl,你会发现它一点都不比Postman差!
最基础的用法特别简单,你只需要输入:
curl https://www.example.com
这就相当于你在浏览器里访问这个网址,然后curl会把网站返回的内容显示出来。
常用功能详解
1. 下载单个文件
以下命令将获取 URL 的内容并将其显示在 STDOUT 中(即在您的终端上)。
$ curl http://www.centos.org
要将输出存储在文件中,您可以将其重定向,如下所示。这还将显示一些额外的下载统计信息。
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
2. 将 CURL 输出保存到文件
我们可以使用 -o/-O 选项将 curl 命令的结果保存到文件中。
-o(小写 o)结果将保存在命令行中提供的文件名中 -O(大写O)URL中的文件名将被用作存储结果的文件名
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
现在页面 gettext.html 将保存在名为“mygettext.html”的文件中。您还可以注意到,当使用 -o 选项运行 curl 时,它会显示下载进度表,如下所示。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900
100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987
当您使用 curl -O(大写 O)时,它会将内容保存在本地机器中名为“gettext.html”的文件中。
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
注意:当 curl 必须将数据写入终端时,它会禁用进度表,以避免打印混乱。我们可以使用 '>'|'-o'|'-O' 选项将结果移动到文件中。
3. 一次获取多个文件
我们可以通过在命令行上指定 URL 来一次性下载多个文件。
句法:
$ curl -O URL1 -O URL2
下面的命令将下载 index.html 和 gettext.html 并将其保存在当前目录下的相同名称中。
$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
请注意,当我们从同一个服务器下载多个文件时,如上图所示,curl 会尝试重新使用连接。
4. 使用 -L 选项跟随 HTTP 位置标头
默认情况下,CURL 不遵循 HTTP 位置标头。它也被称为重定向。当请求的网页移动到另一个地方时,HTTP 位置标头将作为响应发送,它将包含实际网页所在的位置。
例如,当有人在印度的浏览器中输入 google.com 时,它会自动重定向到“google.co.in”。这是基于 HTTP 位置标头完成的,如下所示。
$ curl http://www.google.com
<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>
上面的输出表明请求的文档已移至“http://www.google.co.in/”。
我们可以使用 -L 选项坚持 curl 跟随重定向,如下所示。现在它将下载 google.co.in 的 html 源代码。
$ curl -L http://www.google.com
5. 继续/恢复以前的下载
使用 curl -C 选项,您可以继续下载由于某种原因已经停止的下载。当您下载大文件并且下载中断时,这将很有帮助。
如果我们说“-C -”,那么 curl 会找到从哪里开始恢复下载。我们也可以给出一个偏移量'-C
使用 curl 开始下载,然后按 Ctrl-C 停止下载。
$ curl http://www.centos.org
0
注意:-# 用于显示进度条而不是进度表。
现在上述下载停止在 20.1%。使用“curl -C -”,我们可以从之前停止的地方继续下载。现在下载量从 20.1% 开始。
$ curl http://www.centos.org
1
6. 限制数据传输速率
您可以使用 –limit-rate 选项限制数据传输的数量。您可以指定最大传输速率作为参数。
$ curl http://www.centos.org
2
上述命令将数据传输限制为 1000 字节/秒。curl 可能会在短时间内使用更高的传输速率。但平均而言,它会达到 1000B/秒。
以下是上述命令的进度表。可以看到当前速度接近1000 Bytes。
$ curl http://www.centos.org
3
7.只有在给定时间之前/之后修改的文件才下载
我们可以使用 curl 中的 -z 选项获取特定时间后修改的文件。这将适用于 FTP 和 HTTP。
$ curl http://www.centos.org
4
上面的命令将下载 yy.html 只有当它被修改晚于给定的日期和时间
$ curl http://www.centos.org
5
如果在给定的日期和时间之前修改了 yy.html,则上面的命令将下载 yy.html。
有关日期表达式支持的各种语法,请参阅“man curl_getdate”
8. 在 CURL 中通过 HTTP 身份验证
有时,网站需要用户名和密码才能查看内容(可以使用 .htaccess 文件完成)。在 -u 选项的帮助下,我们可以将这些凭据从 cURL 传递到 Web 服务器,如下所示。
$ curl http://www.centos.org
6
注意:默认情况下 curl 使用基本 HTTP 身份验证。我们可以使用 -ntlm | 指定其他身份验证方法。-消化。
9. 从 FTP 服务器下载文件
CURL 也可用于从 FTP 服务器下载文件。如果给定的 FTP 路径是一个目录,默认情况下它会列出特定目录下的文件。
$ curl http://www.centos.org
7
上述命令将从ftp服务器下载xss.php文件并保存在本地目录中。
$ curl http://www.centos.org
8
这里,给定的 URL 指的是一个目录。所以 CURL 会列出给定 URL 下的所有文件和目录
10. 使用范围列出/下载
CURL 支持在 URL 中给出的范围。当给定范围时,将下载在范围内匹配的文件。从 FTP 镜像站点下载包会很有帮助。
$ curl http://www.centos.org
9
上面的命令将在终端中列出 az 范围中的所有包。
11.上传文件到FTP服务器
curl 也可用于通过 -T 选项将文件上传到 FTP 服务器。
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
0
上述命令会将名为 myfile.txt 的文件上传到 FTP 服务器。您还可以使用范围操作同时上传多个文件。
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
1
我们可以选择使用“.” 从 STDIN 获取输入并传输到远程。
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
2
上面的命令将从标准输入中获取用户的输入,并将内容保存在 ftp 服务器中,名称为“myfile_1.txt”。
您可以为每个 URL 提供一个“-T”,这对指定要上传的内容。
12. 使用 Verbose 和 Trace 选项的更多信息
您可以使用 -v 选项了解正在发生的事情。-v 选项启用详细模式,它将打印详细信息
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
3
about 命令将输出以下内容
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
4
如果您需要更详细的信息,则可以使用 –trace 选项。跟踪选项将启用所有传入/传出数据到给定文件的完整跟踪转储
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
5
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
6
当 curl 由于某种原因失败而我们不知道为什么时,这个详细和跟踪选项会派上用场。
13. 使用 DICT 协议获取单词的定义
您可以在 DICT 协议的帮助下使用 CURL 获取单词的定义。我们需要将字典服务器 URL 传递给它。
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
7
上面的命令将列出bash的含义如下
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
8
现在你可以看到它使用了“The Collaborative International Dictionary of English”。有很多词典可用。我们可以使用列出所有字典
$ curl http://www.centos.org > centos-org.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
9
现在为了在计算机中找到Bash的实际含义我们可以在“foldoc”字典中搜索bash如下
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
0
结果将是,
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
1
14.使用代理下载文件
我们可以使用 -x 选项指定 CURL 使用代理来执行特定操作。我们需要指定代理的主机和端口。
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
2
15. 使用 SMTP 协议发送邮件
cURL 也可用于使用 SMTP 协议发送邮件。您应该指定发件人地址、收件人地址和邮件服务器 IP 地址,如下所示。
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
3
一旦输入上述命令,它将等待用户提供数据到邮件。编写完消息后,键入 。(句号) 作为最后一行,将立即发送电子邮件。
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
4
小提醒
用https的时候要注意安全,不要随便用-k跳过证书验证 调试的时候可以用-v看详细信息,但正式用的时候记得关掉 如果公司网络要求用代理,记得设置好-x参数 处理重要数据时,最好用https而不是http
写在最后
用curl最大的好处就是可以快速、方便地测试各种网络请求,而且它在几乎所有类Unix系统上都是预装的。所以,花点时间掌握它绝对是值得的!我是V浪,我们明天见!
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...