curl 学习

curl https://www.baidu.com

上面命令向 www.example.com 发出 GET 请求,服务器返回的内容会在命令行输出。

-H

-H 参数添加 HTTP 请求的标头。

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

添加多个标头

curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://www.baidu.com

-b

-b 参数用来向服务器发送 Cookie

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

发送多个 Cookie

curl -b 'foo1=bar' -b 'foo2=baz' https://www.baidu.com

读取本地文件 cookies.txt

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

-c

-c 参数将服务器设置的 Cookie 写入一个文件

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

-d

-d 参数是用来发送数据的。这个参数通常用于 HTTP 请求中,尤其是用于发送 POST 请求

  1. 发送简单的数据:
curl -d "param1=value1&param2=value2" http://example.com/resource
  1. 发送文件内容:
curl -d '@filename.txt' http://example.com/resource
  1. 设置 Content-Type: 默认情况下,使用 -d 发送的数据会被 curl 当作 application/x-www-form-urlencoded 类型。如果你需要发送 JSON 数据,可以这样做:
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" http://example.com/resource

记住,使用 -d 参数的 curl 命令会自动设置 HTTP 请求方式为 POST。如果你需要使用其他 HTTP 方法(比如 PUT),你需要使用 -X 参数来明确指定。

-F

-F 参数用来向服务器上传二进制文件。

curl -F 'file=@photo.png' https://www.baidu.com/profile

-F 参数可以指定 MIME 类型。

curl -F 'file=@photo.png;type=image/png' https://www.baidu.com/profile

-F 参数也可以指定文件名。

curl -F 'file=@photo.png;filename=me.png' https://www.baidu.com/profile

-G

-G 参数用来构造 URL 的查询字符串。

curl -G -d 'q=kitties' -d 'count=20' https://www.baidu.com/search

上面命令会发出一个 GET 请求,实际请求的 URL 为 https://google.com/search?q=kitties&count=20。如果省略 --G,会发出一个 POST 请求。

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

curl -G --data-urlencode 'comment=hello world' https://www.example.com

--data-urlencode

--data-urlencode 参数等同于 -d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。

$ curl --data-urlencode 'comment=hello world' https://www.baidu.com/login

上面代码中,发送的数据 hello world 之间有一个空格,需要进行 URL 编码。

-i

-i 参数打印出服务器回应的 HTTP 标头。

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

-k

-k 参数指定跳过 SSL 检测。

$ curl -k https://www.baidu.com

-L

-L 参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。

curl -L -d 'api=test' https://www.example.com/api

-o

-o 参数将服务器的回应保存成文件,等同于 wget 命令。

curl -o example.html https://www.example.com

-O

-O 参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名,下面命令将服务器回应保存成文件,文件名为 bar.html

curl -O https://www.example.com/foo/bar.html

-s

-s 参数将不输出错误和进度信息。

curl -s https://www.example.com

-S

-S 参数指定只输出错误信息,通常与 -s 一起使用。

curl -Ss /dev/null https://google.com

-u

-u 参数用来设置服务器认证的用户名和密码。

curl -u 'bob:12345' https://google.com/login

上面命令设置用户名为 bob,密码为 12345,然后将其转为 HTTP 标头 Authorization: Basic Ym9iOjEyMzQ1

curl 能够识别 URL 里面的用户名和密码。

curl https://bob:12345@google.com/login

-v

-v 参数输出通信的整个过程,用于调试。

curl -v https://www.example.com

--trace 参数也可以用于调试,还会输出原始的二进制数据。

curl --trace - https://www.example.com

-x

-x 参数指定 HTTP 请求的代理。

curl -x http://127.0.0.1:1087 www.google.com

-X

-X 参数指定 HTTP 请求的方法

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

原文链接:

可能是东半球最好的 Curl 学习指南,强烈建议收藏! - 掘金

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...