一、初识curl
curl 是一个功能强大的命令行工具,用于传输数据,支持多种协议(如 HTTP、HTTPS、FTP 等)。
分析以下curl:
curl "https://$HOST/mon/adm/au/opera" --header "Authorization: $AUTH" -X POST -H 'Content-Type: application/json' --data '{"reportFormUid":"01", "operationType":"mute", "action": "ON"}'
这是一个典型的 HTTPS POST 请求,用于向服务器发送 JSON 格式的操作指令。
1. 请求基础信息
-
URL :
https://$HOST/mon/adm/au/opera
$HOST
是变量,需替换为实际主机地址(如api.example.com
)。- 路径
/mon/adm/au/opera
可能指向管理后台的某个操作接口。
-
方法 :
POST
明确指定为 POST 请求,通常用于提交数据。
**2. 请求头(Headers)**
- **
Authorization: $AUTH
** - 用于**
Authorization(授权)
** 身份验证,$AUTH
需替换为有效的凭证(如Bearer token
或Basic base64编码
)。
- 用于**
- **
Content-Type: application/json
**
声明请求体为 JSON 格式。
**3. 请求体(Body)**
-
JSON 数据 :
python{"reportFormUid":"01", "operationType":"mute", "action": "ON"}
-
reportFormUid: "01"
:可能标识操作目标的表单或资源。 -
operationType: "mute"
:操作类型为"静音"。 -
action: "ON"
:执行开启静音的操作。
4.一些细节
同样是发送 JSON 数据:
1、curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
2、curl "https://$HOST/mon/adm/au/opera" --header "Authorization: $AUTH" -X POST -H 'Content-Type: application/json' --data '{"reportFormUid":"01", "operationType":"mute", "action": "ON"}'
5. 文件操作
下载文件:
python
curl -O https://example.com/file.zip
-O
使用服务器原始文件名保存。
*
断点续传:
python
curl -C - -O https://example.com/largefile.zip
-C -
自动恢复未完成的下载。
*
上传文件:
python
curl -F "file=@localfile.txt" https://example.com/upload
-F
用于表单文件上传。
6. 调试与高级功能
显示请求详情:
python
curl -v https://example.com
-v
输出请求和响应的头部信息。
*
跟随重定向:
python
curl -L https://example.com/short-url
-L
自动跳转。
*
使用代理:
python
curl -x http://proxy.example.com:8080 https://target.com
-x
指定代理服务器。
*
仅获取响应头:
python
curl -I https://example.com
-I
只显示 HTTP 头部。
*
监控网站状态(状态码):
python
curl -s -o /dev/null -w "%{http_code}" https://example.com
返回 HTTP 状态码。
7. 认证与安全
Basic 认证:
python
curl -u username:password https://secure.com
-u
传递用户名和密码。
*
忽略 SSL 证书验证:
python
curl -k https://self-signed.example.com
-k
跳过证书检查(不推荐生产环境使用)。
二、curl信息转化为python发送请求
python
import requests
url = "https://HOST/mon/adm/au/opera"
headers = {
"Authorization": "AUTH_TOKEN",
"Content-Type": "application/json"
}
data = {
"reportFormUid": "01",
"operationType": "mute",
"action": "ON"
}
response = requests.post(url, headers=headers, json=data)
#response = requests.request(url, headers=headers, json=data)
print(response.status_code, response.text)
三、curl在postman中使用
1、import

2、替换变量
