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 個請求標頭主體 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無主體等)時以橙色警告徽章提示具體問題
  • 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、標頭數量、主體字元數,以及壓縮/重新導向/跳過憑證/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