如何使用Curl?

·
长篇 协议 file 服务器 代理 命令 文件 密码 字符 curl the txt 请求 socks5 php 文本 网页 o wget July 21, 2021

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。如果操作熟练, 完全可以取代部分图形浏览器的功能。不带有任何参数时,curl 就是发出 GET 请求:

curl https://www.typeboom.com/

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

-A参数

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

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://www.typeboom.com/

上方的命令以Chrome浏览器为User-Agent向www.typeboom.com发送了GET请求。

curl -A '' https://www.typeboom.com/

上方的命令以无User-Agent的方式向www.typeboom.com发送了GET请求。(大多数网站所使用的CDN的内置WAF会屏蔽)

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

上方的命令使用了-H参数直接指定标头,更改了User-Agent并向www.typeboom.com发送了GET请求。

-b参数

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

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

上方的命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。

curl -b 'foo1=bar;foo2=bar2' https://www.typeboom.com/

上方的命令向服务器发送了Cookie: foo=bar和Cookie: foo2=bar2两个Cookie。

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

上方的命令读取并向服务器发送了Cookie.txt中的Cookie。

-c参数

使用-c参数将服务器返回的Cookie保存至某个文件。

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

上方的命令将服务器返回的Cookie保存至了Cookie.txt文件中。

-d参数

使用-d参数向服务器发送POST请求的数据体。

curl -d'login=admin&password=123'-X POST https://www.typeboom.com/admin/
# 或者
curl -d 'login=admin' -d 'password=123' -X POST  https://www.typeboom.com/admin/

上方的命令向服务器发送(POST)了login=admin&password=123。但是使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
和发送Cookie类似,-d参数同样可以读取本地文本文件的数据,向服务器发送。

curl -d '@data.txt' https://www.typeboom.com/

上方的命令向服务器发送(POST)了data.txt文件中的数据。

--data-urlencode参数

--data-urlencode参数相当于-d参数,但是会自动对发送的内容进行URL(统一资源定位器)编码。

curl --data-urlencode 'comment=Cross the Great Wall and go to the world' https://www.typeboom.com/

上方的命令中,要向服务器发送的命令存在无法直接读取的空格,需要被URL编码。

-e参数

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

curl -e 'https://ArtemisNet.net/' https://www.typeboom.com/

上方的命令设置 HTTP 的标头为https://ArtemisNet.net/,向服务器发送了GET请求。
这在某些启用了防盗链(HotLink保护)且禁止以空Referer的方式的服务器上很管用。

-H参数

-H参数可以通过直接添加标头Referer,达到同样效果。

curl -H 'Referer: https://ArtemisNet.net/' https://www.typeboom.com/

上方的命令使用-H参数设置Referer为https://ArtemisNet.net/向服务器发送了GET请求。

-F参数

-F参数用于向服务器发送二进制文件。

curl -F 'file=@photo.webp' https://www.typeboom.com/

上方的命令会给HTTP请求加上标头Content-Type: multipart/form-data并将文件photo.webp作为file字段发送(POST)至了服务器。
-F参数同样也可以指定MINE类型:

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

上方的命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为application/octet-stream。
-F参数同样也可以指定文件名。

curl -F 'file=@photo.webp;filename=cat.webp' https://www.typeboom.com/

上方的命令将文件photo.webp发送(POST)至了服务器,但是服务器收到的文件的名称为cat.webp。

-G参数

-G参数用于构造URL(统一资源定位器)的查询字符串。

curl -G -d 'Workers' https://www.typeboom.com

上方的命令向服务器发送了一个GET请求,请求的URL为:https://www.typeboom.com?=Workers
如有数据需要URL编码,可以结合--data--urlencode参数。-H参数可以添加HTTP请求标头。

curl -H 'Accept-Language: zh-CN' https://www.typeboom.com/

上方的命令添加了HTTP请求标头:Accept-Language: zh-CN并向服务器发送了GET请求。

curl -H 'Accept-Language: zh-CN' -H 'Secret-Message: FUNCDN-sucks' https://www.typeboom.com/

上方的命令添加了两个HTTP请求标头:Accept-Language: zh-CN和Secret-Message: FUNCDN-sucks并向服务器发送了GET请求。

curl -d '{"login": "admin", "pass": "123"}' -H 'Content-Type: application/json' https://www.typeboom.com/admin

上方的命令添加了HTTP请求标头:Content-Type:application/json并使用-d参数向服务器发送(POST)了json数据。

-i参数

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

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

上方的命令将会在终端打印出服务器回应的HTTP标头后,换行再打印出服务器返回的网页源码。

-I参数

-I参数将向服务器发送HEAD请求并打印出服务器回应的HTTP标头。

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

上方的命令将会在终端打印出服务器对HEAD请求的回应。

--head参数

--head参数等同于-I参数。

curl --head https://www.typeboom.com/

上方的命令同样将会在终端打印出服务器对HEAD请求的回应。

-k参数

-k参数将会禁用SSL证书校验。

curl -k https://www.typeboom.com/

上方的命令向服务器发送了GET请求,但不检查SSL证书的有效性。

-L参数

-L参数将允许所发出的HTTP请求跟随服务器的重定向,如果不设置此参数,CURL将默认不跟随重定向。

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

上方的命令向服务器发送了GET请求,但允许跟随服务器的重定向。

--limit-rate参数

--limit-rate参数将限制HTTP请求和回应的带宽。

curl --limit-rate 500k https://www.typeboom.com/

上方的命令向服务器发送了GET请求且限制其所使用的带宽速度为每秒500千字节(KiB)。

-o参数

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

curl -o speedtest-12.7m.png https://img.typeboom.com/pic/speedtest-12.7m.png

上方的命令向服务器发送了GET请求,并将服务器的回应保存为speedtest-12.7m.png。

-O参数

-O参数将服务器的回应保存为文件,并将URL(统一资源定位器)中的最后一部分作为文件名。

curl -O https://img.typeboom.com/pic/speedtest-12.7m.png

上方的命令向服务器发送了GET请求,并将服务器的回应保存为speedtest-12.7m.png。

-s参数

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

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

上方的命令向服务器发送了GET请求,如果不发生错误,将仅输出正常的运行结果。
结合-o /dev/null参数,可使CURL不输出任何信息,此参数的意思为:“将文件写入/dev/null”,/dev/null在类Unix系统中是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功)。

curl -s -o /dev/null https://www.typeboom.com/

上方的命令向服务器发送了GET请求,但不会输出任何信息。

-u参数

-u参数可以设置服务器认证的用户名以及密码。

curl -u "bob:12345" https://www.typeboom.com/admin

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

-v参数

-v参数将会输出CURL与服务器通信的全过程。

--trace参数

--trace参数将会输出CURL与服务器通信的全过程,并且输出原始的二进制数据。

-x参数

-x参数可以指定HTTP请求使用的代理。

curl -x socks5://admin:123@127.0.0.1:2081 https://www.typeboom.com/

上方的命令通过位于127.0.0.1:2081的Socks5代理其用户名为admin密码为123,向服务器发出了GET请求。
如果不指定代理类型,CURL将默认采用HTTP代理协议。

curl -x admin:123@127.0.0.1:2082 https://www.typeboom.com/

上方的命令通过位于127.0.0.1:2081的HTTP代理其用户名为admin密码为123,向服务器发出了GET请求。

-X参数

-X参数可以指定HTTP请求方法。

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

上方的命令向服务器发送了POST请求。

  • 淘宝店铺隐藏导航栏
  • 修改VMware虚拟机硬盘类型

已有 2 条评论
  1. alrik2333

    太牛逼看不懂

    alrik2333 September 24th, 2022 at 10:01 pm回复
  2. 巡视官

    你是我羽翼下的风。

    巡视官 September 6th, 2021 at 04:49 pm回复
取消回复

说点什么?
Title
-A参数
-b参数
-c参数
-d参数
--data-urlencode参数
-e参数
-H参数
-F参数
-G参数
-i参数
-I参数
--head参数
-k参数
-L参数
--limit-rate参数
-o参数
-O参数
-s参数
-u参数
-v参数
--trace参数
-x参数
-X参数

© 2023 Type boom
友链&RSS