如何在Linux和OSX上有效使用Curl
说明
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端点时,验证检查将失败。使用--insecure
curl选项将忽略证书验证问题。这最常与自签名证书一起使用。
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端点发出请求。