logo
GeekFormat

cURL 转代码生成器

cURL 命令输入

粘贴 cURL 命令,自动解析 URL、请求方法、请求头、请求体和常用参数,一键生成 JavaScript fetch、Axios、Node fetch、Python requests/httpx、Go net/http、PHP cURL、Java OkHttp、C# HttpClient、PowerShell Invoke-RestMethod、wget 等11种语言的可运行代码。

请求解析结果

https://api.example.com/items1 个请求头Body 15 字符curlToCode.flag.followRedirects

生成代码

curlToCode.target.fetch

粘贴curl命令,秒出11种语言可运行HTTP请求代码。

相关推荐

适用场景

  • 在Chrome DevTools Network面板右键请求选择「Copy as cURL」后,粘贴到本工具直接转换成项目所用语言的代码,比手写请求快10倍
  • 调第三方API时文档给的是curl示例,快速转为Python requests/Java OkHttp/C# HttpClient代码嵌入到项目中
  • 调试生产环境接口时从抓包工具(Charles/mitmproxy/Wireshark)复制curl命令,转为单元测试代码直接验证
  • 写API文档时在多种语言示例之间快速切换,给不同技术栈的读者提供现成可运行的示例代码
  • 排查线上请求问题时,用curl复现问题后转换为代码形式提交给同事或提Issue,方便他人直接复现
  • 跨语言开发时(如从Python转Go项目),将已有curl请求快速转为新语言HTTP客户端调用代码,省去查文档的时间
  • 在Shell脚本中把curl命令转换为PowerShell Invoke-RestMethod给Windows运维同事,或者反过来转换
  • 学习HTTP协议:通过对比不同语言实现同一请求的代码,理解各HTTP客户端库的API差异
  • 快速将curl -X POST -d 'json'转换为带正确Content-Type和JSON序列化的代码,避免手写字符串拼接出错
  • CI/CD脚本中需要调用API时,将本地调试好的curl命令转为对应脚本语言代码嵌入流水线

功能特点

  • 11种目标语言/库:覆盖前端(JS fetch/Axios)、Node.js(node-fetch)、Python(requests/httpx)、Go(net/http)、PHP(cURL)、Java(OkHttp)、C#(HttpClient)、PowerShell(Invoke-RestMethod)、命令行(wget),主流技术栈一网打尽
  • 智能解析curl命令:自动识别URL、HTTP方法、请求头、请求体,支持单/双引号、反斜杠转义、多行命令拼接(反斜杠换行)
  • 常用curl参数全支持:-X/--request 指定方法、-H/--header 请求头、-d/--data/-F 表单/JSON请求体、-u/--user Basic认证、-A/--user-agent UA、-b/--cookie Cookie、-e/--referer Referer、-L/--location 跟随重定向、--compressed 自动解压、-k/--insecure 跳过证书验证、-I/--head HEAD请求
  • JSON请求体智能识别:检测Content-Type为application/json时自动用JSON.parse/JSON.stringify/requests(json=)/json=序列化,生成的代码直接使用对象而非字符串,更符合语言习惯
  • Basic认证自动转换:识别-u user:pass后自动生成Authorization: Basic <base64> 请求头,目标语言使用原生auth机制(Python auth=、OkHttp credentials、C# credentials等)
  • 安全标志徽章提示:自动检测--compressed/-L/-k/-u等参数,解析结果中以徽章醒目展示
  • 请求方法可手动切换:自动解析curl方法后,允许用户在下拉框中手动切换方法(GET/POST/PUT等7种),立即看到对应代码
  • 字符串转义安全:生成各语言代码时使用语言原生字符串字面量(Python三引号/反斜杠转义、Go反引号原始字符串、C# @""、PHP单引号、Java双引号转义),避免代码运行时报语法错误
  • 解析错误提示:输入无效curl命令(如缺少URL、不以curl开头、POST无body等)时以橙色警告徽章提示具体问题
  • 3个示例一键加载:提供GET+Token认证、POST+JSON、Basic认证+跟随重定向3个典型示例,快速看到工具能力
  • 一键清空输入:Clear按钮快速重置,粘贴新命令不残留
  • 全本地处理:curl命令和请求内容全部在浏览器本地解析转换,不上传任何服务器,敏感Token/密码不会泄露
  • 代码一键复制:生成代码后点击Copy按钮复制到剪贴板,直接粘贴到项目中即可运行
  • HTTPS不安全模式适配:-k/--insecure参数在Node/Go/Python/PHP/C#/PowerShell等各语言中生成对应的TLS跳过证书验证配置(wget用--no-check-certificate,C#留用ServicePointManager提示,Node设NODE_TLS_REJECT_UNAUTHORIZED)

使用方法

  1. 获取curl命令:在浏览器DevTools Network面板右键请求 → Copy → Copy as cURL (bash);或从Postman/Charles/mitmproxy等抓包工具导出cURL;或自己手写curl命令
  2. 粘贴到输入框:将curl命令粘贴到顶部输入区,支持单行/多行(反斜杠续行)命令,自动剥离换行
  3. 点击示例按钮参考:不熟悉格式可点「示例1/2/3」加载预设curl命令查看效果
  4. 查看解析结果:解析结果区会显示URL、Header数量、Body字符数,以及压缩/重定向/跳过证书/Basic认证等徽章,有问题会显示橙色警告
  5. 必要时调整方法:如果自动识别的方法不对(如curl未加-X POST但应该是POST),在下拉框中手动切换HTTP方法
  6. 选择目标语言:在目标代码区点击对应语言按钮(fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget等)
  7. 复制代码:点击「复制代码」按钮,粘贴到你的项目/终端即可运行

常见问题

cURL 转代码工具有什么用?为什么不直接用 curl 命令?

直接在代码中调用curl命令(如shell_exec、subprocess.run)需要启动子进程,既不安全也难以处理错误、获取响应头、做类型转换。生产代码应该使用编程语言原生的HTTP客户端(Python requests、Java OkHttp、JS fetch等)。curl-to-code的价值是把你从DevTools/抓包工具复制出的curl命令,自动翻译成对应语言的HTTP客户端代码,省去查API文档、手动转义引号、处理JSON/认证等机械劳动,复制粘贴即可运行。

支持哪些目标语言/库?

目前支持11种目标:JavaScript fetch(浏览器原生)、Axios(Node/浏览器通用HTTP库)、Node.js node-fetch、Python requests(Python最流行HTTP库)、Python httpx(新一代支持HTTP/2和异步的HTTP库)、Go net/http(Go标准库)、PHP cURL扩展、Java OkHttp(Android/后端通用高性能库)、C# HttpClient(.NET标准HTTP客户端)、PowerShell Invoke-RestMethod(Windows自动化脚本常用)、wget(命令行下载工具)。如果你需要的语言不在列表中(如Ruby、Rust reqwest、Dart http、Swift URLSession等),可以在页面反馈,我们会根据需求添加。

如何从 Chrome DevTools 复制 curl 命令?

步骤:1. 打开Chrome/Edge,按F12打开DevTools;2. 切换到Network面板;3. 刷新页面或触发目标请求;4. 在请求列表中找到目标请求(可通过XHR/JS过滤);5. 右键点击该请求 → Copy → 选择「Copy as cURL (bash)」(推荐bash版本,兼容性最好);6. 粘贴到本工具输入框即可。注意不要选Copy as fetch(那是JS代码不是curl)。Firefox/Safari操作类似,都有Copy as cURL选项。

curl 命令的引号处理很麻烦,支持什么格式?

工具支持bash风格的单引号、双引号、反斜杠转义;Windows cmd的双引号+^转义;PowerShell的反引号转义基本都能识别。推荐使用bash格式(单引号包裹)。多行命令(反斜杠\续行)也支持粘贴,工具自动剥离换行和续行符。如果你的curl命令特别复杂(包含shell变量、命令替换$(...)、管道|等),建议先在终端执行echo命令打印展开后的实际curl再复制,或先手动简化(变量替换为实际值)。

curl 中 -d 发送 JSON 为什么服务端收到乱码/400?

这是最常见的curl错误之一。curl的-d/--data选项默认Content-Type是application/x-www-form-urlencoded(表单格式),而不是application/json。如果你直接 curl -d '{"name":"demo"}' url,服务端会按表单解析(解析失败或得到空数据)。必须显式加上-H "Content-Type: application/json"头,才能正确发送JSON。本工具检测到body但没有Content-Type时会给出橙色警告提示。

生成的代码可以直接复制运行吗?需要装什么依赖?

大部分语言的代码使用标准库可以直接运行(fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget都是内置),不需要额外安装。其他需要第三方库:Axios(需npm install axios)、node-fetch(需npm install node-fetch,Node 18+已内置fetch无需安装)、Python requests(pip install requests)、Python httpx(pip install httpx)、Java OkHttp(需Maven/Gradle引入okhttp3依赖)。代码默认打印响应状态码和文本,你可以根据需要修改处理逻辑。

支持 multipart/form-data 文件上传(-F 参数)吗?

基础支持:-F参数会被识别为请求体(body),但生成的代码目前是把@file作为字面字符串处理而非实际文件上传。文件上传需要读取本地文件内容,各语言处理方式差异较大(JS用FormData/FormData.append,Python用files=参数,Go用multipart.Writer)。建议在工具生成的代码基础上,查阅对应库的文件上传文档做调整。后续版本会增强multipart支持。

会上传我的 curl 命令和敏感数据吗?

完全不会。所有解析和代码生成过程100%在你的浏览器本地完成(纯前端JavaScript),curl命令、请求头中的Token/Cookie/密码、请求体中的数据不会发送到任何服务器。你可以断网使用本工具,不用担心敏感信息泄露。

-k/--insecure 跳过证书验证在各语言代码中怎么处理?

检测到-k参数时,本工具会为每个目标语言生成对应的跳过证书验证配置:Python requests/httpx使用verify=False;Node.js设置process.env.NODE_TLS_REJECT_UNAUTHORIZED='0';Go创建自定义tls.Config{InsecureSkipVerify: true};PHP设置CURLOPT_SSL_VERIFYPEER=false和CURLOPT_SSL_VERIFYHOST=0;Java OkHttp需要自定义TrustManager(代码中加注释提示,因代码较长);C#可以自定义ServerCertificateCustomValidationCallback;PowerShell使用-SkipCertificateCheck(PS6+);wget使用--no-check-certificate;浏览器fetch无法跳过证书(浏览器安全限制,代码中加注释说明)。注意:这些配置仅用于本地开发测试,生产环境绝对不要禁用证书验证。

生成的 Go 代码为什么不跟随重定向?加了 -L 应该跟随啊?

Go的net/http默认行为就是不跟随重定向(与curl默认行为一致,curl必须显式加-L才跟随)。工具检测到-L参数时会生成空client(http.Client{}默认CheckRedirect为nil,即跟随10次重定向);不加-L时生成CheckRedirect返回http.ErrUseLastResponse的client,不跟随重定向(与curl不加-L时行为一致)。如果你希望Go始终跟随重定向,可以在代码中直接使用http.DefaultClient或自定义Client{Timeout: ...}即可。

如何处理需要登录/带Cookie的请求?

有两种方式:①从已登录的浏览器DevTools直接复制curl(推荐):右键请求→Copy as cURL,这样cookie/header都自动包含,粘贴转换即可直接运行;②在curl中用-b/--cookie手动指定Cookie值(-b 'sessionid=abc; token=xyz'),-u/--user指定Basic认证,-H "Authorization: Bearer xxx"指定Bearer Token,工具会原样转换这些头。注意:从浏览器复制的Cookie有时效性,几小时后可能过期需要重新复制。

为什么 JSON 请求体在 Python requests 中用 json= 参数而不是 data=?

Python requests库的data参数会把dict按application/x-www-form-urlencoded编码、把string原样发送,而json参数会自动把dict/列表序列化为JSON字符串,并自动设置Content-Type: application/json头(如果你没有手动设置的话)。本工具检测到Content-Type包含application/json且body是合法JSON时,会自动解析JSON为Python dict并使用json=参数,这样代码更简洁、不需要手动json.dumps、也不会忘记Content-Type头。非JSON的body(表单/XML/纯文本)使用data=参数发送原始字符串。

curl 命令很长很多头,生成的代码带着所有头怎么办?

从DevTools复制的curl命令会包含大量浏览器自动添加的头(Host、Connection、Accept、Accept-Encoding、Accept-Language、Sec-Fetch-*、sec-ch-ua、Upgrade-Insecure-Requests等),这些头在代码中大部分不需要显式设置(HTTP客户端会自动添加合理默认值,比如Accept-Encoding、Connection、Host、Content-Length等)。建议在复制生成的代码后,手动删除不必要的头,至少保留:Content-Type、Authorization、Cookie(如需要)、自定义业务头。多余的头不仅让代码难看,还可能导致行为异常(比如显式设置Accept-Encoding但客户端不会自动解压)。

支持 HTTPS 代理(-x/--proxy)参数吗?

目前HTTP代理(-x/--proxy)参数还未自动转换。代理配置在各语言中差异较大(JS fetch无原生代理支持需Agent,Python用proxies=参数,Go通过Transport.Proxy,PHP用CURLOPT_PROXY,C#用WebProxy,Java用OkHttpClient.Builder().proxy())。代理头(代理本身的认证)也需要单独处理。当前版本代理相关参数会被忽略,你可以在生成的代码基础上手动添加代理配置,后续版本会增强代理支持。

和 curlconverter.com 等在线工具比有什么区别?

相比curlconverter.com等知名工具,GeekFormat的curl-to-code优势:①全本地处理(curlconverter的处理逻辑在服务器端或客户端),不上传数据更安全;②中文界面和中文解释,对国内开发者友好;③生成代码更贴合实际生产使用(比如Python requests对JSON body使用json=参数而非data=,Go默认行为对齐curl,C#正确处理Content-Type不硬编码application/json);④配套深度文档、FAQ、对照表、故障排查,不只是生成代码还帮你理解为什么这么写;⑤免费无广告,无需注册登录,不需要任何网络请求即可使用。

术语表

cURL / curl
开源命令行工具和libcurl库,用于通过URL在命令行中发送HTTP/HTTPS/FTP等协议请求,是开发者调试API最常用的工具。
HTTP方法
HTTP请求动作,常见有GET(读取)、POST(创建)、PUT(整体更新)、PATCH(部分更新)、DELETE(删除)、HEAD(获取头)、OPTIONS(查询服务器能力)。
请求头(Header)
HTTP请求中的元数据键值对,如Content-Type、Authorization、User-Agent、Cookie、Accept等,通过-H/--header在curl中指定。
请求体(Body)
HTTP请求的数据部分,POST/PUT/PATCH常用,通过-d/--data/--data-binary/-F在curl中指定,常见格式有JSON、form-urlencoded、multipart/form-data。
Content-Type
请求头/响应头,指明body的媒体类型。application/json表示JSON,application/x-www-form-urlencoded表示URL编码表单,multipart/form-data表示文件上传表单。
Basic认证
HTTP基础认证,通过Authorization: Basic base64(user:pass)头传递用户名密码,curl中用-u user:pass指定。
Bearer Token
基于令牌的认证方式,通过Authorization: Bearer <token>头传递,JWT/OAuth2常用。
User-Agent
请求头,标识客户端类型(浏览器/爬虫/脚本),curl默认发送"curl/版本号",很多网站会拦截非浏览器UA,常用-A指定。
Cookie
服务器通过Set-Cookie下发、浏览器后续请求通过Cookie头回传的键值对,用于会话保持。curl -b发送Cookie,-c保存Cookie。
Referer
请求头,表示当前请求来源页面URL,部分防盗链/CSRF校验会检查。curl -e设置。
重定向(3xx)
服务器返回301/302/303/307/308状态码时告诉浏览器跳转到新URL。curl默认不跟随,加-L/--location跟随。
--compressed
curl选项,自动添加Accept-Encoding: deflate, gzip头并自动解压响应。不设置时响应可能是乱码压缩数据。
-k/--insecure
curl选项,跳过HTTPS证书验证,仅用于自签证书测试环境,生产环境禁止使用。
fetch API
浏览器原生JavaScript HTTP请求API,返回Promise,现代浏览器都支持。
Axios
流行的基于Promise的HTTP客户端库,浏览器和Node.js通用,自动JSON序列化、拦截器、超时取消。
OkHttp
Square公司出品的Java/Android HTTP客户端库,高性能、HTTP/2支持、连接池、透明GZIP。
HttpClient(.NET)
C#/.NET推荐的HTTP客户端,System.Net.Http命名空间,.NET Core/.NET 5+标准API。
Invoke-RestMethod
PowerShell 3.0+内置的HTTP请求cmdlet,自动解析JSON/XML响应为PowerShell对象。

cURL 常用选项与11种目标语言对照表

Content-Type 常见值与curl用法

Chrome DevTools Copy as cURL 的三种格式对比

Troubleshooting