curl 转 Python 转换器
在你的浏览器中即时将 curl 命令转换为 Python requests 代码。命令留在你的设备上。
你的 curl 命令在浏览器本地转换为 Python,绝不会上传,但请避免将真实的生产令牌或凭据粘贴到任何工具中。
想发送该请求?试试 API 请求客户端。
关于 curl 转 Python
这款 curl 转 python 转换器会接收你从终端、浏览器 DevTools 或 API 文档复制的 curl 命令,并将其改写为一份基于 requests 库的整洁 Python 脚本。作为 curl 转 requests 转换器,它会读取 -X、-H、-d、--data-raw、--json、-u、-b 和 -G 等标志,选出正确的 HTTP 方法,并为有效的 JSON 请求体选择 json=、为表单负载选择 data=,让请求第一次运行就能成功。当你要把一个快速 API 测试迁移到 Python 脚本、notebook 或后端集成中,而又不想手动重新输入请求头时,它非常顺手。整个转换都在你的浏览器中运行,因此 curl 命令以及其中的任何令牌都在你的设备上本地处理,绝不会上传。
功能特性
- 生成一个带有推断出的 HTTP 方法的 requests.request(method, url, ...) 调用
- 根据每个 -H/--header 标志构建一个 Python headers 字典
- 对有效的 JSON 请求体使用 json=,对表单编码的负载使用 data=
- 将 JSON 请求体美化为可编辑的 Python 字典字面量
- 将 -u/--user 映射为 Basic 认证的 Authorization 头,并处理 cookie、user-agent 和 referer
- 将 -G/--get 的数据作为查询字符串追加到 URL
- 对没有 requests 对应项的标志发出警告,如 -k 和输出到文件的选项
- 一键复制结果或将其下载为 request.py
如何使用 curl 转 Python
- 将你的 curl 命令粘贴到 cURL 命令框中。
- 在输出面板中查看生成的 Python requests 脚本。
- 查看警告横幅,了解被调整或跳过的标志。
- 点击「复制」,或将脚本下载为 request.py。
示例
输入
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"Ada"}'
输出
import requests
url = "https://api.example.com/users"
headers = {
"Content-Type": "application/json",
}
payload = {
"name": "Ada"
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.status_code)
print(response.text)
JSON 请求体通过 json= 传入,让 requests 替你序列化。
常见错误与故障排除
- 输出使用了 data=,而你期望的是 json=。 — 用 --json 发送请求体,或添加 -H "Content-Type: application/json",让转换器识别它为 JSON 并切换到 json=。
- 运行脚本时抛出 ModuleNotFoundError: No module named 'requests'。 — 先用 pip install requests 安装依赖;生成的代码面向第三方 requests 库,而非 urllib。
- JSON 请求体输出成了带引号的字符串,而不是 Python 字典。 — 这发生在请求体不是有效 JSON 时。请修正 JSON,或将其保留为字符串并用 data= 发送。
常见问题
- 如何将 curl 命令转换为 Python?
- 将 curl 命令粘贴到输入框中,转换器会在右侧呈现一份 Python requests 脚本,你可以复制它或下载为 request.py。
- 它生成的是 requests 库还是 urllib 的代码?
- 它面向流行的 requests 库,并生成一个 requests.request(method, url, ...) 调用。运行脚本前请用 pip install requests 安装它。
- 转换器何时使用 json= 而非 data=?
- 当请求体是有效 JSON(用 --json 或 JSON 的 Content-Type 发送)时,它使用 json= 让 requests 序列化字典;对于表单编码或原始字符串请求体,则使用 data=。
- curl -u 的 Basic 认证值在 Python 输出中如何处理?
- -u 或 --user 的值会被 base64 编码到 headers 字典里的 Authorization: Basic 头中,与 curl 在网络上发送的内容一致。
- 我把 curl 转换为 Python 时命令会被上传吗?
- 不会。curl 转 python 的转换完全在你的浏览器中运行,因此命令及其中的任何凭据都留在你的设备上。
相关工具
全部 ArrayKit 工具