Curl指南


简介

Curl 是一个命令行工具,用来请求Web服务器。适用于各种无图形化界面的服务器端,例如跳板机/堡垒机访问服务接口。

安装

linux环境

# Debian/Ubuntu
sudo apt-get update
sudo apt-get install curl
# CentOS
sudo yum update
sudo yum install curl
curl --version

macOS环境

brew install curl
curl --version

windows环境

  1. 直接官网下载安装 https://curl.se/download.html,添加PATH环境变量即可。
  2. 利用docker运行,docker run --rm alpine curl --version,–rm 标志表示容器在运行完毕后会自动删除。

使用

默认参数、-G->GET请求

默认即位GET请求,访问网页获取网页html,访问接口获取json。

curl https://example.com
# 构造URL的查询字符串并进行URL编码
curl -G --data-urlencode 'comment=hello world' https://www.example.com

-X->指定HTTP请求的方法,POST请求

# POST请求
curl -X POST https://www.example.com
# DELETE请求
curl -X DELETE https://www.example.com

-d->用于发送POST请求的数据体,自动将请求转为POST方法,因此可以省略-X POST

curl -d 'login=emma&password=123' -X POST https://www.example.com/login
# 读取本地文本文件的数据,向服务器发送
curl -d '@data.txt' https://www.example.com/login
# 数据进行URL编码,向服务器发送
curl --data-urlencode 'comment=hello world' https://www.example.com/login

-H->添加HTTP请求的标头

curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://www.example.com
curl -H 'accesstoken: xxxx' https://www.example.com
curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://www.example.com/login
curl -H "Authorization: Bearer token123" http://example.com/resource
curl --header "Content-Type:application/json" https://example.com

-b->发送Cookie

# 发送单个Cookie
curl -b "cookie_name=cookie_value" https://www.example.com
curl --cookie "cookie_name=cookie_value" https://www.example.com
# 发送多个Cookie
curl -b "cookie1=value1; cookie2=value2" https://www.example.com
# 从文件中读取Cookies
curl -b cookies.txt https://www.example.com

-i、-I->显示HTTP响应头信息

# 只显示响应头,等同于发起HEAD请求,一般用于服务健康检测
curl -I https://www.example.com
curl --head https://www.example.com
# 显示响应头以及结果
curl -i https://www.example.com

-A->指定客户端的用户代理标头,即User-Agent

curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.199 Safari/537.36' https://www.example.com
curl --user-agent 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.199 Safari/537.36' https://www.example.com

-v->输出通信的整个过程

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

-x->指定HTTP请求的代理

# 使用HTTP代理,默认为HTTP
curl -x https://proxy.example.com:8080 https://example.com
# 使用SOCKS5代理
curl -x socks5://proxy.example.com:1080 https://example.com
curl --socks5-hostname proxy.example.com:1080 https://example.com

-o、-O->保存下载,类似wget命令

  1. 下载文件到当前目录
    curl -O https://example.com/file.zip
  2. 指定本地文件名下载
    curl -o local_file.zip http://example.com/file.zip

-L->请求跟随服务器的重定向,curl默认不跟随重定向

curl -L https://example.com

-F->文件上传

# 上面命令会给HTTP请求加上标头Content-Type: multipart/form-data,然后将文件local_file.txt作为file字段上传
curl -F "file=@local_file.txt" https://example.com/upload
# 设置MIME文件类型,curl默认MIME类型为application/octet-stream
curl -F "file=@local_file.txt;type=text/plain" https://example.com/upload
# 指定文件名,服务器接收到的文件名为ddf.txt
curl -F 'file=@local_file.txt;filename=ddf.txt' https://example.com/upload
# 上传多个
curl -F "file1=@file1.txt" -F "file2=@file2.jpg" https://example.com/upload

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

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

-e->设置HTTP的标头Referer

curl -e 'https://google.com?q=example' https://www.example.com

-k->跳过SSL检测

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

参考文献

Curl Cookbook
curl se
curl 的用法指南


文章作者: ddf_samsara
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ddf_samsara !
  目录