cURL 转代码
开发工具
正在载入
正在加载工具
工具代码会在打开时按需载入,请稍候。
本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。
关于这个工具
粘贴一条字面量 cURL 命令,将 URL、请求方法、请求头和内联请求体转换为三种语言之一。编辑命令、切换语言或修改脱敏设置后,代码会立即更新。解析仅在浏览器中进行,不会运行 cURL、访问接口、上传输入或保存转换历史。请检查警告和凭据占位值后,再复制或下载代码。
常见用途
- 将 API 文档中受支持的 cURL 示例改写为 Fetch、Python Requests 或 Go net/http 代码。
- 把带引号的 JSON POST 或表单文本请求移入应用,减少手动处理字符串转义的工作。
- 替换已识别的请求头和 URL 凭据,准备可分享的请求示例,再手动检查请求体和自定义字段。
使用方法
- 1.粘贴包含单个完整 HTTP(S) URL 的 cURL 命令。为带查询参数的 URL 加引号,并使用 POSIX 单引号或双引号中的字面量。
- 2.选择 JavaScript Fetch、Python Requests 或 Go。除非明确需要原始值,否则保持凭据脱敏开启,并检查所有警告。
- 3.检查当前代码并手动移除残留的敏感信息。复制代码或下载 .js、.py、.go 文件,在执行前按运行环境调整。
请求转换示例
带查询参数与 Accept 请求头的 GET
curl 'https://example.com/api/items?limit=2' -H 'Accept: application/json'
GET https://example.com/api/items?limit=2 Accept: application/json
这里的输出是请求摘要,不是实际响应。三种目标语言均表示相同的 GET URL 与 Accept 请求头,不会访问接口。
内联 JSON POST
curl 'https://example.com/api/items' --json '{"name":"demo","active":true}'POST https://example.com/api/items
Content-Type: application/json
Accept: application/json
{"name":"demo","active":true}未显式指定方法时,--json 生成 POST,并默认添加 JSON Content-Type 和 Accept。JSON 文本保留为内联请求体;工具不会校验其 Schema,也不会脱敏其中的字段。
将表单字段移入 GET 查询
curl -G 'https://example.com/search' --data-urlencode 'q=hello world' -d 'page=2'
GET https://example.com/search?q=hello%20world&page=2
-G 将数据移入查询,--data-urlencode 对 hello world 的值进行百分号编码,并用 & 连接第二个数据字段。最终 GET 不包含请求体。
常见转换错误
- 粘贴未加引号且包含 ? 或 & 的 URL:请为完整 URL 加引号,使 Shell 特殊字符按字面量处理。
- 粘贴浏览器导出的 --compressed、-L、-s 或 -S 等选项:不支持的选项会报错,不会被静默丢弃。请理解原选项的含义后再简化命令。
- 使用 -d @payload.json 或 -F file=@image.png:工具不会读取文件或创建 multipart 上传。请提供受支持的内联文本,或在应用中实现文件处理。
- 把 -X GET 与请求体组合:如果字段属于查询参数,请使用 -G;否则按 API 要求选择正确方法。
- 误以为脱敏会隐藏所有秘密:JSON 中的密码、自定义 X-Secret 请求头或 session_id 查询值仍然可见。复制或分享前请检查完整代码。
限制与说明
- 输入上限为 100,000 字符,只支持单个 HTTP(S) URL。方法仅限大写 GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS,且只接受界面列出的选项;不是完整的 cURL 解析器。
- 不支持 Shell 变量、命令替换、管道、PowerShell/CMD 引号、URL 通配、multipart 上传、文件读取、代理、TLS 和重定向选项。带请求体的 GET/HEAD、空请求头、请求头移除语法及 Host、Content-Length、Transfer-Encoding、Connection 请求头会被拒绝。 重复使用 -A/-e/-b,或将这些别名与同名 -H 请求头混用,也会被拒绝;普通的重复 -H 请求头仍受支持。
- 脱敏仅覆盖已识别的请求头、URL 用户名密码和列出的查询参数名。请求体、自定义请求头/查询名、路径、片段及原始输入不会脱敏。该开关不是完整的敏感信息检测器。
- 浏览器 Fetch 仍受 CORS 和禁止请求头规则限制。重复请求头在 Fetch 中合并、在 Python Requests 中仅保留最后一个值、在 Go 中分别保留。非 ASCII 请求头值可能被运行环境拒绝。Python 需要 requests 包。
- URL 解析可能规范化域名、端口、路径或转义。内联文本请求体使用 UTF-8。生成的请求不会自动跟随重定向,浏览器重定向响应可能不透明;不保证网络行为与 cURL 逐字节相同。
常见问题
可以转换哪些 cURL 选项?
支持 -X/--request、-H/--header、-d/--data、--data-raw、--data-binary、--data-urlencode、--json、-G/--get、-I/--head、-u/--user、-A/--user-agent、-e/--referer、-b/--cookie、--url。参数须为字面量,文件引用及未列出的选项会被拒绝。多个 data 字段用 & 连接,-G 将数据移入查询字符串。
脱敏具体替换哪些值?
替换 Authorization、Proxy-Authorization、Cookie、X-Api-Key 的值、URL 用户名密码,以及名为 token、access_token、access-token、accesstoken、refresh_token、refresh-token、refreshtoken、api_key、api-key、apikey、key、password、secret、authorization 的查询参数值,忽略大小写。Basic 凭据会转换为 Authorization 请求头。请求体和其他位置需手动检查。
为什么原来的 cURL 能成功,Fetch 却失败?
浏览器会应用命令行 cURL 不受约束的 CORS、禁止请求头和凭据规则。生成代码不会授予跨域访问权限,也不能绕过受控制的请求头。请检查 API 的浏览器支持和服务器配置,或使用合适的服务端运行环境。
转换会发送或保存我的请求吗?
不会。解析和生成都在本地完成,不执行命令,也不保存转换历史。复制操作把当前代码写入剪贴板,下载操作把当前代码写入文件。即使开启输出脱敏,输入框仍保留原始命令。