cURL 转换器:cURL 转 Fetch、Python、Axios 等
粘贴一条 curl 命令(例如从浏览器开发者工具中复制的),即可得到 8 种语言的可直接运行代码。请求头、JSON 请求体、表单、文件上传、认证和 Cookie 都会被转换。
在浏览器中运行无需注册不上传任何数据
JavaScript fetch
如何使用cURL 转换器
- 以 cURL 格式复制请求:在 Chrome 或 Firefox 开发者工具的网络选项卡中右键点击请求 → 复制 → 以 cURL 格式复制。
- 把它粘贴到输入框中。支持带
\的多行命令、Windows 的^续行以及$'…'字符串。 - 选择目标:JavaScript fetch、Axios、Node.js、Python requests、Python httpx、Go、PHP 或 HTTPie。
- 阅读输出下方的警告,其中列出了在目标语言中没有对应实现的选项。
- 复制代码或将其下载为文件。
为什么要把 curl 命令转换成代码?
curl 是 HTTP 的通用语言。API 文档用 curl 展示示例,浏览器开发者工具把请求导出为 curl,技术支持团队也用 curl 发送复现步骤。当你想在应用中发出同样的请求时,就得手动改写:把每个 -H 移到 headers 对象中,把 -d 变成请求体,把 -u 转成 Basic 认证,还要记得 -G 会把数据移到查询字符串中。这个转换器帮你完成这些转换,生成可以直接粘贴到项目中的代码。
支持的 curl 选项
| 选项 | 转换为 |
|---|---|
-X、-I、-G | HTTP 方法(存在请求体时推断为 POST) |
-H、-A、-e、-b | 请求头、User-Agent、Referer 和 Cookie |
-d、--data-raw、--data-binary、--data-urlencode、--json | 请求体:JSON 对象、表单字段或原始文本 |
-F | Multipart 表单数据,包括 @file 文件上传 |
-u、--oauth2-bearer | Basic 认证或 Bearer 令牌 |
-k、-L、-m、-x、--compressed | TLS 校验、重定向、超时、代理和压缩 |
JSON 请求体会变成真正的对象
当请求发送的是 JSON(带有 Content-Type: application/json 请求头、使用 --json,或请求体能被解析为 JSON)时,转换器会输出原生数据结构,而不是转义后的字符串:fetch 使用 JSON.stringify({...}),Axios 使用普通对象,requests 和 httpx 使用带 Python 字典(True、False、None)的 json=。这样数据就很容易编辑,也方便填入变量。
需要注意的差异
浏览器无法禁用证书校验,也无法让单个请求走代理,因此 -k 和 -x 在浏览器 fetch 代码中只会以注释形式出现。curl 默认不跟随重定向,除非传入 -L;而 fetch、requests 和 Go 默认会跟随。用 -d 发送但没有 Content-Type 的请求体会被 curl 以表单编码发送;如果它看起来像 JSON,转换器会以 JSON 发送,并通过警告告诉你。
常见问题
我的 curl 命令会被发送到服务器吗?
不会。解析和代码生成完全在你的浏览器中进行。从开发者工具复制的命令往往包含 Cookie 和令牌,所以不会上传或存储任何内容。
如何在 Chrome 中以 cURL 格式复制请求?
打开开发者工具(F12),进入“网络”选项卡,右键点击请求并选择复制 → 以 cURL (bash) 格式复制。Windows 的 cmd 版本在这里同样可用。
支持文件上传吗?
支持。
-F name=@file 在 JavaScript 中变为 FormData,在 Python 中变为 files= 字典,在 Go 中变为 mime/multipart,在 PHP 中变为 CURLFile。-d @file 和 -T file 会从文件中读取请求体。转换器不认识的选项会怎样处理?
它们会作为警告列在输出下方,不会被悄悄丢弃。
-s、-v 或 -o 这类只影响输出的选项会被忽略,因为它们不会改变请求本身。在 Python 中应该用 requests 还是 httpx?
requests 一直是同步脚本的默认选择。httpx 的 API 几乎相同,额外支持 HTTP/2 和异步,并且默认不跟随重定向,这一点与 curl 更接近。