Curl 使用指南

简介:

Curl 是一个利用URL语法在命令行下工作的文件传输工具。它支持文件上传和下载,是综合传输工具。curl就是客户端(client)的URL工具的意思。

发起 GET 请求:

不带有任何参数时,curl 就是发出 GET 请求。

curl https://www.baidu.com

重定向跟踪 (-L)

当请求一个 URL 返回 301 之类的重定向响应时,可以使用 -L 参数来自动跟踪重定向。curl 默认不跟随重定向。

curl -L https://www.baidu.com

保存响应体到文件 (-o/O)

使用 -o 参数指定文件名,可以将响应结果储存到文件中

curl -o 1.html https://www.baidu.com

还可以使用 -O 参数直接用服务器上的文件名保存在本地

curl -O http://www.test.com/1.txt

获取 HTTP 响应头 (-i)

使用 -i 参数可以查看请求 URL 的响应头与响应体一起返回打印出来。。

curl -i https://www.baidu.com

如果只想获取响应头,可以使用 -I 参数。

curl -I https://www.baidu.com

构造 GET 查询参数 (-G)

在发起 GET 请求时,可能我们需要在 URL 后面跟上查询参数,如 https://www.google.com/search?q=test 。

可以通过 -G 参数来构造 URL 的查询字符串

curl -G -d 'q=test' https://www.google.com/search

上面的示例会将请求参数与请求 URL 拼接然后发出请求,请求地址为https://www.google.com/search?q=test。
注意:如果忘记了-G参数,curl 会发出 POST 请求。

如果数据需要 URL 编码,可以结合使用--data--urlencode参数。

curl -G --data-urlencode 'q=test' https://www.google.com/search

改变 User Agent (-A)

-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version],例如:curl/7.64.1。

curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com

上面命令将User-Agent改成 Chrome 浏览器。

curl -A '' https://google.com

上面命令会移除User-Agent标头。

也可以通过-H参数直接指定标头,更改User-Agent。

curl -H 'User-Agent: php/1.0' https://google.com

有时候Google 会拒绝我们的请求,需要加上Google浏览器的 User agent 才能得到正常返回结果。

curl -G --data-urlencode 'q=test' -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"  https://www.google.com/search

添加 Referrer (-e)

使用 -e参数用来设置 HTTP 请求头的 Referer,表示请求的来源。

curl -e 'https://www.test.com/blog/curl' https://www.baidu.com

携带 Cookie 请求数据 (-b)

使用 -b参数来向服务器发送 Cookie,可以直接接受 Cookie 字符串或者存储了 Cookie 的文件。

curl -b 'foo=bar' https://www.test.com

或者

curl -b ./cookies.txt https://www.test.com

该命令会生成一个 foo=bar 的 Cookie 请求头发送给目标 URL。

使用-c参数可以将目标 URL 携带的 Cookie 写入到一个文件里。

curl -c cookies.txt https://www.test.com

上面的命令可以将 https://www.test.com 的 Cookie 保存到 cookies.txt 文件中

添加 HTTP 请求头 (-H)

curl 可以通过-H key:value 的方式添加 HTTP 请求头,要设置多个请求头,可以通过添加多个-H参数实现。

curl -H 'Accept-Language: en-US' https://www.test.com

前面介绍的 User agent 以及 Cookie 也是一个请求头,也可以通过-H 的方式设置在请求头中。

curl -H 'User-Agent: my-user-agent' https://www.test.com

curl -H 'Cookie: foo=bar' https://www.test.com
curl -H 'Accept-Language: en-US' -H 'Cookie: foo=bar' https://google.com

上面命令添加两个 HTTP 标头。

指定 HTTP 请求的方法 (-X)

-X 参数可以用来更改 HTTP 请求方法,默认情况下,curl 发送的是 GET 请求。要使其发送 POST 请求,需要使用 -X POST 命令行参数。-X PUT 将发起 PUT 请求。

curl -X POST https://www.test.com

添加 POST 数据到请求中 (-d)

要将 POST 数据添加到请求中,需要使用-d参数。

使用-d参数后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。

curl -d 'login=admin&password=123456' https://www.test.com
curl -d '@data.txt' https://google.com/login

上面命令读取data.txt文件的内容,作为数据体向服务器发送。

发送 JSON 数据

发送 JSON 格式的数据。在这种情况下,需要使用 -H 参数来设置Content-Type请求头。

curl -d '{"option": "value", "something": "anothervalue"}' -H "Content-Type: application/json" -X POST https://www.test.com

还可以使用@直接读取本地 JSON 文件的内容,来发起请求

curl -d "@my-file.json" -X POST https://www.test.com

-X可省略。

你可能感兴趣的:(curl)