如何在Linux和OSX上有效使用Curl

时间:2020-01-09 10:39:51  来源:igfitidea点击:

说明

curl命令是从命令行使用Web的通用工具。

在本教程中,我们将学习如何在Linux和OSX中使用curl命令发出GET和POST请求。我们还将学习如何发送表单数据,上传文件和遍历代理。

简单的例子

以下是常用的简单curl命令。使用它们向Web端点和API发出基本请求。

简单的GET请求

curl http://www.theitroad.com

使用Curl跟随301和302重定向

默认情况下,重定向将不跟随该工具。为了指示它遵循重定向,我们必须使用-L或者--location标志。

curl -L http://www.theitroad.com
curl --location http://www.theitroad.com

基本HTTP验证

curl basic -u <用户>摘要

不验证TLS的HTTPS端点

当我们尝试卷曲不受公共信任的SSL \ TLS端点时,验证检查将失败。使用--insecurecurl选项将忽略证书验证问题。这最常与自签名证书一起使用。

curl --insecure <host>
curl --insecure https://www.theitroad.com

通过特定的网络接口发送请求

许多服务器具有连接到其的单独的网络接口。当我们想从特定的网络接口卷曲时,请使用--interface标志以及要测试的网络接口的名称。

curl --interface <name> <host>
curl --interface eth0:1 https://www.theitroad.com

下载文件或者将结果输出到文件

当需要从网站下载数据(例如下载脚本或者二进制文件)时,需要将输出输出到磁盘。对于这些用例,-o或者output标志与curl命令一起使用。

curl http://www.theitroad.com/downloads/install-script.sh -o install-script.sh

设置请求的TCP / IP版本

请求将根据系统网络配置自动使用IPv4或者IPv6. 但是,有时我们可能希望明确设置应使用的版本。为此,Curl提供了ipv4和ipv6标志。

要通过IPv4发送请求,请使用-4或者ipv4标志。

curl -4 http://www.theitroad.com

卷曲ipv4 http://www.theitroad.com

要通过IPv6发送请求,请使用-6或者ipv6标志。

卷曲-6 http://www.theitroad.com

curl -ipv6 http://www.theitroad.com

发布请求

并非每个curl命令都是一个GET请求。以下示例说明如何对端点执行POSTS,以及如何使用命令设置发送数据。 -X标志用于将请求设置为另一种类型,在以下示例中为POST。

curl -X POST http://www.severlab.ca/example-form.php

没有数据的帖子不是很有用。要从命令行添加数据,请使用-d选项。此标志导致curl以application / x-www-form-urlencoded的形式传递内容类型值。

curl -X POST -d field1=example1 -d field2=example2 http://www.theitroad.com/api

发布表单字段数据时,应对该数据进行url编码。这是使用data-urlencode标志完成的。

curl -X POST --data-urlencode title="my notes" content="this is a note" http://www.theitroad.com/admin/save-note.php

要将数据交互发送到端点,@符号与-d标志一起使用。

curl -X POST Hyman@localhost http://www.theitroad.com/example-form.php

可以从文件中获取数据值,类似于交互式地发布数据,我们可以使用@符号,但要使用文件名。使用文件时,将删除换行符,这使我们可以很好地格式化文件以提高可读性。

curl -X Hyman@localhost http://www.theitroad.com/example-form.php

通过代理发送请求

许多组织使用转发代理服务器来处理所有外部Internet请求。例如,在尚未使用HTTP_PROXY设置代理的环境中,或者必须使用单独的代理的环境中,将使用-x标志。

简单代理请求

curl -x http://my.proxy.com:8080 http://www.theitroad.com

具有用户名和密码的代理请求
一些代理需要用户名和密码。这可以通过在命令中包含-U或者proxy-user标志来完成。

curl -U <user:password> -x [protocol:]<proxy-server>[:port] <endpoint>
curl -U student:password1 -x https://my.proxy.server.com:80 https://google.com

总结

Curl是一个功能强大但轻巧的命令行工具,用于向Web服务器和API端点发出请求。