如何将带-g参数的Curl请求转换为Python Requests?
解决Python Requests模拟带-g/-k参数的Curl请求问题
你的代码和Curl请求存在几个关键偏差,导致请求失败,调整如下:
核心问题修正
- SSL证书错误解决:Curl的
-k参数是忽略SSL证书验证,对应Requests的verify=False参数,加上它就能解决SSL报错。 - 认证方式错误:你的Curl是把用户名密码放在POST的JSON请求体里,而非HTTP Basic认证(代码里的
auth参数是做Basic Auth,和Curl逻辑完全不符),必须把参数放在请求体中。 - 关于
-g参数:Curl的-g是禁用URL通配符解析(比如不把{}/[]当成通配符),而Python Requests默认不会对URL做这类解析,只要你正确传入URL(IPv4地址不要加[],IPv6地址保留[]即可),不需要额外配置。
正确的Requests代码
import requests # 构造和Curl中-d参数一致的JSON请求体 payload = { "password": "pwd", "username": "test" } # 发送POST请求 response = requests.post( "https://ip_address:port/path/to/api", # IPv6地址请写成https://[ip_address]:port/path/to/api json=payload, verify=False ) # 查看响应结果 print(response.status_code) print(response.text)
补充说明
- 使用
verify=False会关闭SSL证书校验,生产环境建议使用合法证书,并通过verify="/path/to/cert.pem"指定证书路径,不要直接关闭验证。 - 如果你的URL中包含
{}这类特殊字符,直接原样传入Requests即可,它不会像Curl那样默认解析成通配符,这就等价于Curl的-g功能。
内容的提问来源于stack exchange,提问作者T_Square
相关产品推荐
相关产品推荐

