tigtools

cURL 转代码转换器

粘贴 curl 命令,例如从浏览器开发者工具或 API 文档中复制的命令,即可获得对应语言的等效代码。

在浏览器中运行 无需注册

语言

使用方法

  1. 以 curl 形式复制请求,例如从浏览器的开发者工具(Network 标签页,右键点击,选择 Copy as cURL)或从 API 文档中复制。
  2. 将其粘贴到输入框中。使用 \ 的换行续行也可以正常处理。
  3. 选择 JavaScript fetch、Node.js axios、Python requests 或 PHP cURL。
  4. 阅读代码下方的说明,然后复制或下载结果。

工作原理

转换器会先按照 POSIX shell 的方式将命令拆分为单词:支持单引号、带反斜杠转义的双引号、$'…' 字符串以及反斜杠换行续行。$TOKEN 等 shell 变量不会被展开,而是保持为文本。

支持的 curl 选项:URL(或 --url)、-X/--request、-H/--header、-d/--data、--data-ascii、--data-raw、--data-binary、--data-urlencode、--json、-F/--form 和 --form-string(字段以及带 ;type= 的 @file 上传)、-u/--user、-G/--get、-I/--head、-A/--user-agent、-e/--referer、-b/--cookie(cookie 字符串)、-L/--location 和 --compressed。短选项可以合并,例如 -sSL;值可以紧跟在选项后,例如 -XPOST。

规则与 curl 一致:多个 -d 值会以 & 连接;使用 data 时请求为 POST,除非 -X 或 -G 另有指定;-G 会将数据作为查询字符串追加到 URL;--json 会将 Content-Type 和 Accept 请求头设置为 application/json。当正文为 JSON 且 Content-Type 表明如此时,代码会发送真正的对象(Python 中为 json=,PHP 中为配合 json_encode 的数组),而不是转义后的字符串。对于 multipart 表单,Content-Type 请求头会交由库处理,以确保 boundary 正确。

-k/--insecure 会被有意忽略,并会有说明解释原因。只会影响 curl 自身输出的选项(-s、-S、-v、-i、-o、--fail 等)也会被忽略并给出说明。任何其他选项都会产生明确指出该选项的错误,而不是生成行为不同的代码。仍存在一个差异:curl 只有在给出 -L 时才会跟随重定向,而 fetch、axios 和 requests 默认会跟随;PHP 代码只有在给出 -L 时才会跟随。

该工具只生成代码。它绝不会发送请求,因此命令中的 token 和密码不会被用于任何地方。

示例

在 Python 中复现浏览器请求

从 Chrome 的 Network 标签页复制失败的 API 调用为 cURL,并将其转换为 Python requests。请求头、Cookie 和 JSON 正文都会保留,方便在脚本中复现问题。

在 Node.js 中使用 API 文档

API 参考文档中显示 “curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur”。对应的 axios 版本使用 auth: { username: "key", password: "" } 和表单编码的请求体。

PHP 文件上传

“curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload” 会转换为 CURLOPT_POSTFIELDS,其中包含 new CURLFile('invoice.pdf', 'application/pdf') 和 note 字段。

常见问题

这个工具会发送我的请求吗?

不会。本工具只会解析命令文本并生成代码,不会发出请求,因此命令中的 API 密钥或 Cookie 不会被使用或存储。

为什么不转换 -k/--insecure?

关闭证书校验会让连接容易被拦截。生成的代码会保持校验开启;如果服务器的证书不受信任,请改而修复证书或信任存储。

为什么会出现“不支持该选项”的提示?

转换器只会转换它能够准确重现含义的选项。代理、客户端证书、Cookie 存储文件及类似选项会被拒绝,以免生成的代码行为与 curl 不一致。

是否支持 Windows cmd 命令?

复制为“cURL (bash)”的命令效果最佳。Windows cmd 使用 ^ 作为换行续行符,并且引号规则不同;行尾的 ^ 可以接受,但其他 cmd 转义可能不被支持。

隐私

该命令仅在您的浏览器中解析,不会发送任何请求。不会上传、存储任何内容,也不会纳入分析统计。