cURL 转 Python · 免费在线 curl 转 requests
免费在线 cURL 转 Python 工具,把 curl 命令一键转成 requests 代码。生成结果用 requests 的惯用写法:headers 单独成 dict、JSON 体走 json= 参数(自动带上 Content-Type)、-u 转成 auth= 元组、-F 表单转成 files=。方法名直接映射到 requests.get/post 等函数。纯浏览器本地转换,不上传、免登录。
- 粘贴 curl 命令(本页已自动预选 Python)。
- 检查「已忽略参数」提示。
- 复制生成的 requests 代码。
- 安装依赖 pip install requests 后运行。
为什么 JSON 体用 json= 而不是 data=?
因为 json= 会自动序列化 dict 并补上 Content-Type: application/json,省掉手工 json.dumps。所以 curl 里的 JSON 体会被解析成 Python dict 字面量传给 json=。非 JSON 的请求体(如 a=1&b=2)则走 data=,requests 会按表单编码发送。
-u 的基础认证怎么转?
转成 auth=("user", "pass") 元组,requests 会自动生成 Authorization 头并做 base64 编码,不需要你手算——这一点比 fetch 方便。Bearer token 类的鉴权本来就写在 -H 里,会原样进 headers dict。
需要加 timeout 吗?
强烈建议加。requests 默认没有超时,网络异常时会一直挂着。curl 的 --max-time 不会被转换,请自行补上 timeout=10(或 timeout=(3, 10) 分别指定连接与读取超时)。生产代码里漏掉 timeout 是最常见的坑。
连续请求同一个域名,要用 Session 吗?
建议用。requests.Session() 会复用 TCP 连接(keep-alive),批量请求明显更快,还能自动维持 Cookie、把公共 headers 挂在 session.headers 上一次设置。把生成的 requests.post(...) 改成 s.post(...) 即可,其余参数不变。
curl 的 -k 转成了 verify=False,能用吗?
只建议在本地调试自签证书时临时用,它会关闭 TLS 校验、带来中间人攻击风险,且 urllib3 会打警告。正确做法是把自签 CA 加入信任链,或用 verify="/path/to/ca.pem" 显式指定证书,生产环境务必保持默认的 verify=True。