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种语言的可运行代码。
请求解析结果
生成代码
粘贴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命令转为对应脚本语言代码嵌入流水线
使用方法
- 获取curl命令:在浏览器DevTools Network面板右键请求 → Copy → Copy as cURL (bash);或从Postman/Charles/mitmproxy等抓包工具导出cURL;或自己手写curl命令
- 粘贴到输入框:将curl命令粘贴到顶部输入区,支持单行/多行(反斜杠续行)命令,自动剥离换行
- 点击示例按钮参考:不熟悉格式可点「示例1/2/3」加载预设curl命令查看效果
- 查看解析结果:解析结果区会显示URL、Header数量、Body字符数,以及压缩/重定向/跳过证书/Basic认证等徽章,有问题会显示橙色警告
- 必要时调整方法:如果自动识别的方法不对(如curl未加-X POST但应该是POST),在下拉框中手动切换HTTP方法
- 选择目标语言:在目标代码区点击对应语言按钮(fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget等)
- 复制代码:点击「复制代码」按钮,粘贴到你的项目/终端即可运行
功能特点
- 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)
常见问题
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命令后提示「未找到URL」
URL前缺少curl命令(直接粘贴了一段HTTP头) URL被折行但没有用反斜杠续行,工具无法识别多行拼接的URL URL中包含特殊字符(&等)被shell截断 URL在单引号中但有嵌套单引号未转义
生成的Python requests代码跑起来返回401/403
Cookie/Token过期:从DevTools复制curl时Cookie是当时有效的,过段时间就失效 缺少User-Agent:部分API校验User-Agent,浏览器复制的curl带浏览器UA,但生成代码可能保留或丢失 缺少Referer/Origin头:部分防盗链/CSRF校验检查这些头 未正确传递sessionid:某些站点需要先登录获取Cookie再请求
POST JSON数据但服务端收不到
缺少Content-Type: application/json头:curl -d默认Content-Type是application/x-www-form-urlencoded,不是JSON JSON字符串双引号未转义:不同Shell(bash/cmd/PowerShell)对引号的处理不同,复制错格式会导致JSON不完整 生成的代码中JSON被双转义(对象被再次JSON.stringify) Body中存在中文但没编码
生成代码运行后SSL/TLS证书错误
目标HTTPS站点使用自签证书:curl加了-k但代码没生效(检查是否生成了跳过证书配置) Node.js环境变量未设置:检测到-k时生成process.env.NODE_TLS_REJECT_UNAUTHORIZED='0',需要放在fetch调用前 公司代理SSL Inspection(中间人证书):需要将公司根证书加到信任库而非禁用验证 Python的verify=False只对requests生效,底层urllib3还会报InsecureRequestWarning
生成的代码响应结果和curl不同
自动添加的请求头丢失:浏览器会自动加Host/Connection/Accept/Accept-Encoding/Accept-Language/Sec-Fetch-*等头,这些头是否保留会影响响应 重定向处理不一致:fetch默认跟随重定向,Go默认不跟随,本工具会根据-L参数生成对应配置 压缩解压差异:--compressed时部分库需要显式配置自动解压 HTTP/2 vs HTTP/1.1:curl默认协商HTTP/2,某些老服务端对HTTP版本敏感 Cookie Jar:curl -b每次手动发Cookie,部分库会自动管理Cookie导致多轮请求Cookie变化
复制的curl命令太长导致粘贴截断/出错
请求头太多(比如浏览器自动加了几十个头):手动删除不必要的头(sec-ch-ua、sec-fetch-*、Accept、Accept-Language等非必需头) Base64编码的文件/大Body让命令超长:改用--data-binary @file从文件读body Windows cmd命令行长度限制(8191字符):改用PowerShell或WSL下复制bash格式curl 复制时被空白字符截断:确保从DevTools右键完整复制
术语表
- 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种目标语言对照表
| curl选项 | 作用 | JS fetch | Axios | Python requests | Go net/http | PHP cURL | Java OkHttp | C# HttpClient | PowerShell | wget |
|---|---|---|---|---|---|---|---|---|---|---|
| -X METHOD | 指定HTTP方法 | method: 'POST' | method: 'post' | requests.request('POST') | http.NewRequest('POST') | CURLOPT_CUSTOMREQUEST | .method() | HttpMethod.Post | -Method POST | --method=POST |
| -H 'K: V' | 添加请求头 | headers: {} | headers: {} | headers={} | req.Header.Set | CURLOPT_HTTPHEADER | .addHeader() | .Headers.TryAddWithoutValidation | $headers=@{} | --header= |
| -d 'data' | 请求体 | body: data | data: data | data=/json= | strings.NewReader | CURLOPT_POSTFIELDS | RequestBody.create | new StringContent | -Body | --body-data= |
| -u user:pass | Basic认证 | Authorization头 | auth:{} | auth=(u,p) | req.SetBasicAuth | CURLOPT_USERPWD | Credentials.basic | new NetworkCredential | 自动转Header | --user/--password |
| -L | 跟随重定向 | redirect:'follow' | maxRedirects: N | allow_redirects=True | 默认CheckRedirect | CURLOPT_FOLLOWLOCATION | .followRedirects | AllowAutoRedirect=true | 默认跟随 | -L |
| -k | 跳过证书验证 | 浏览器不支持 | httpsAgent | verify=False | TLSClientConfig | CURLOPT_SSL_VERIFYPEER=false | 需自定义TrustManager | ServerCertificateCustomValidationCallback | -SkipCertificateCheck | --no-check-certificate |
| --compressed | 接受压缩 | 默认支持 | 自动解压 | 自动解压 | 需手动gzip | 自动解压 | 默认支持 | AutomaticDecompression | -TransferEncoding | 默认不解压 |
| -A UA | User-Agent | User-Agent头 | headers | headers={} | req.Header.Set | CURLOPT_USERAGENT | .header() | 默认 | -UserAgent | --user-agent= |
| -b cookie | Cookie | Cookie头 | headers/withCredentials | cookies={} | req.Header.Set | CURLOPT_COOKIE | .header() | CookieContainer | -WebSession | --header= |
| -m SECS | 超时 | AbortController | timeout:N | timeout=N | http.Client.Timeout | CURLOPT_TIMEOUT | .callTimeout | client.Timeout | -TimeoutSec | --timeout= |
Content-Type 常见值与curl用法
| Content-Type | 用途 | curl示例 | 备注 |
|---|---|---|---|
| application/json | 发送JSON数据 | curl -H 'Content-Type: application/json' -d '{"a":1}' | 最常用API类型,-d默认不会设置此头,需显式-H指定 |
| application/x-www-form-urlencoded | URL编码表单 | curl -d 'name=a&age=1' | -d不加-H时默认就是这个类型 |
| multipart/form-data | 文件上传 | curl -F 'file=@a.png' -F 'name=a' | -F自动设置此Content-Type和boundary |
| text/plain | 纯文本 | curl -H 'Content-Type: text/plain' -d 'hello' | 普通文本,API中较少使用 |
| application/octet-stream | 二进制数据 | curl --data-binary @file.bin | 用--data-binary发送原始二进制 |
| application/xml | XML数据 | curl -H 'Content-Type: application/xml' -d '<x/>' | SOAP/旧企业API使用 |
Chrome DevTools Copy as cURL 的三种格式对比
| 格式 | 引号风格 | 转义字符 | 适用场景 |
|---|---|---|---|
| Copy as cURL (bash) | 单引号 '...' | 用\'转义单引号 | Linux/macOS/WSL/Git Bash,推荐粘贴本工具 |
| Copy as cURL (cmd) | 双引号 "..." | 用^转义特殊字符 | Windows cmd.exe命令提示符 |
| Copy as cURL (PowerShell) | 双引号/反引号 | 用`转义 | Windows PowerShell 5/7 |
| Copy as fetch | JS模板字符串 | 无需转义 | 直接在浏览器Console执行 |
- Authentication Header Generator
- Cache-Control Parser
- Content-Disposition 解析器
- CORS Header Builder
- CORS跨域检查器
- CSP Builder
- cURL 转代码生成器
- DNS 全球传播检查
- DNS查询
- Forwarded Header Parser
- Hreflang Generator
- HSTS Analyzer
- HTTP Cookie解析器
- HTTP Headers Checker
- HTTP 请求测试器
- HTTP状态码查询
- IP 归属地查询
- IPv4 转换器
- IPv4 Range Expander
- IPv6 工具箱
- Link Header 解析器
- MX 查找
- 端口检查器
- URL 参数生成器
- Rate Limit Header 解析器
- 重定向链检查器
- Robots.txt 生成器
- Robots.txt 检查器
- Security Headers Checker
- Security.txt 生成器
- Set-Cookie解析器
- Site Network Audit
- Sitemap 生成器
- Sitemap Inspector
- SSL证书检测
- 子网计算器
- URL 解析器
- User-Agent解析器
- UTM 链接生成器
- WebSocket测试
- 我的 IP 是什么?
- WHOIS查询