logo
GeekFormat

Konverter cURL ke Kode

Input perintah cURL

Tempel perintah cURL, otomatis mengurai URL/metode/header/body dan menghasilkan kode yang dapat dijalankan dalam 11 bahasa/pustaka (JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget)

Permintaan yang diurai

https://api.example.com/items1 headerBody 15 karaktercurlToCode.flag.followRedirects

Kode yang dihasilkan

curlToCode.target.fetch

Tempel perintah curl, dapatkan kode permintaan HTTP yang dapat dijalankan untuk 11 bahasa dalam sekejap.

Rekomendasi Terkait

Kasus penggunaan

  • Di panel Network Chrome DevTools, klik kanan permintaan pilih「Copy as cURL」, lalu tempel ke alat ini untuk langsung dikonversi menjadi kode bahasa yang digunakan proyek, 10 kali lebih cepat daripada menulis permintaan manual
  • Saat memanggil API pihak ketiga, dokumentasi memberikan contoh curl, cepat dikonversi menjadi kode Python requests/Java OkHttp/C# HttpClient untuk disematkan ke proyek
  • Saat debugging antarmuka lingkungan production, salin perintah curl dari alat packet capture (Charles/mitmproxy/Wireshark), konversi menjadi kode unit test untuk diuji langsung
  • Saat menulis dokumentasi API, cepat beralih antar contoh multi-bahasa, memberikan kode contoh yang dapat dijalankan untuk pembaca di tech stack berbeda
  • Saat memecahkan masalah permintaan online, gunakan curl mereproduksi masalah lalu konversi menjadi bentuk kode untuk dikirim ke rekan kerja atau buat Issue, memudahkan orang lain mereproduksi langsung
  • Saat pengembangan lintas bahasa (misalnya pindah dari Python ke proyek Go), cepat mengonversi permintaan curl yang ada menjadi kode pemanggilan HTTP client bahasa baru, menghemat waktu membaca dokumentasi
  • Dalam skrip Shell, konversi perintah curl menjadi PowerShell Invoke-RestMethod untuk rekan operasi Windows, atau sebaliknya
  • Mempelajari protokol HTTP: Dengan membandingkan kode yang melakukan permintaan sama di berbagai bahasa, memahami perbedaan API dari library HTTP client
  • Cepat mengonversi curl -X POST -d 'json' menjadi kode dengan Content-Type dan JSON serialization yang benar, menghindari kesalahan dari penyambungan string manual
  • Saat perlu memanggil API dalam skrip CI/CD, konversi perintah curl yang sudah di-debug secara lokal menjadi kode bahasa skrip yang sesuai untuk disematkan ke pipeline

Fitur

  • 11 bahasa/library target: Mencakup frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), command line (wget), semua tech stack utama tercakup
  • Parsing perintah curl cerdas: Otomatis mengenali URL, HTTP method, header, isi permintaan, mendukung kutip tunggal/ganda, escape backslash, penyambungan perintah multi-baris (backslash line continuation)
  • Dukungan lengkap parameter curl umum: -X/--request menentukan method, -H/--header header, -d/--data/-F isi form/JSON, -u/--user Basic Auth, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location mengikuti pengalihan, --compressed dekompresi otomatis, -k/--insecure melewati verifikasi sertifikat, -I/--head permintaan HEAD
  • Pengenalan isi JSON cerdas: Saat mendeteksi Content-Type adalah application/json, otomatis menggunakan JSON.parse/JSON.stringify/requests(json=)/json= untuk serialisasi, kode yang dihasilkan menggunakan objek langsung daripada string, lebih sesuai dengan konvensi setiap bahasa
  • Konversi Basic Auth otomatis: Saat mengenali -u user:pass, otomatis membuat header Authorization: Basic <base64>, menggunakan mekanisme auth asli bahasa target (Python auth=, OkHttp credentials, C# credentials, dll.)
  • Lencana bendera keamanan: Otomatis mendeteksi parameter --compressed/-L/-k/-u, ditampilkan dengan lencana yang mencolok dalam hasil parsing
  • Metode HTTP dapat diubah secara manual: Setelah memparsing method curl, memungkinkan pengguna mengubah method secara manual di dropdown (7 jenis seperti GET/POST/PUT) dan melihat kode terkait secara langsung
  • Escape string aman: Saat menghasilkan kode untuk setiap bahasa, menggunakan literal string asli bahasa tersebut (Python triple quote/backslash, Go backtick raw string, C# @"", PHP kutip tunggal, Java escape kutip ganda) untuk menghindari kesalahan sintaksis saat menjalankan kode
  • Peringatan kesalahan parsing: Saat memasukkan perintah curl yang tidak valid (seperti URL kurang, tidak dimulai dengan curl, POST tanpa body, dll.), menampilkan lencana peringatan oranye dengan detail masalah
  • Muat 3 contoh dalam satu klik: Menyediakan 3 contoh tipikal: GET+Token Auth, POST+JSON, Basic Auth+mengikuti pengalihan, untuk cepat melihat kemampuan alat
  • Bersihkan input dalam satu klik: Tombol Clear reset dengan cepat, tempel perintah baru tanpa sisa data lama
  • Pemrosesan sepenuhnya lokal: Perintah curl dan isi permintaan sepenuhnya diparsing dan dikonversi di browser lokal, tidak diunggah ke server mana pun, Token/kata sandi sensitif tidak akan bocor
  • Salin kode dalam satu klik: Setelah kode dihasilkan, klik tombol Copy untuk menyalin ke clipboard, tempel ke proyek langsung bisa dijalankan
  • Dukungan mode HTTPS tidak aman: Parameter -k/--insecure menghasilkan konfigurasi melewati verifikasi sertifikat TLS yang sesuai di setiap bahasa seperti Node/Go/Python/PHP/C#/PowerShell (wget menggunakan --no-check-certificate, C# meninggalkan petunjuk ServicePointManager, Node mengatur NODE_TLS_REJECT_UNAUTHORIZED)

Cara Penggunaan

  1. Dapatkan perintah curl: Di panel DevTools Network browser, klik kanan permintaan → Copy → Copy as cURL (bash); atau ekspor cURL dari alat packet capture seperti Postman/Charles/mitmproxy; atau tulis perintah curl sendiri
  2. Tempel ke kolom input: Tempel perintah curl ke area input di atas, mendukung perintah satu baris/multi-baris (backslash line continuation), otomatis menghapus baris baru
  3. Klik tombol contoh untuk referensi: Jika tidak terbiasa dengan format, dapat klik「Contoh 1/2/3」untuk memuat perintah curl prasetel dan melihat hasilnya
  4. Lihat hasil parsing: Area hasil parsing akan menampilkan URL, jumlah Header, jumlah karakter Body, serta lencana seperti kompresi/pengalihan/melewati sertifikat/Basic Auth, jika ada masalah akan menampilkan peringatan oranye
  5. Sesuaikan method jika perlu: Jika method yang dikenali otomatis tidak akurat (misalnya curl tidak menambahkan -X POST tapi seharusnya POST), ubah HTTP method secara manual di dropdown
  6. Pilih bahasa target: Di area kode target, klik tombol bahasa yang sesuai (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, dll.)
  7. Salin kode: Klik tombol「Salin kode」, tempel ke proyek/terminal Anda lalu jalankan

Pertanyaan Umum

Apa gunanya alat konverter cURL ke kode?Mengapa tidak menggunakan perintah curl langsung?

Memanggil perintah curl secara langsung dalam kode (seperti shell_exec, subprocess.run) perlu memulai proses anak, tidak aman dan sulit menangani kesalahan, mengambil header respons, konversi tipe. Kode production harus menggunakan HTTP client asli bahasa pemrograman (Python requests, Java OkHttp, JS fetch, dll.). Nilai curl-to-code adalah otomatis menerjemahkan perintah curl yang Anda salin dari DevTools/alat packet capture menjadi kode HTTP client bahasa yang sesuai, menghemat pekerjaan mekanis seperti membaca dokumentasi API, escape kutip manual, menangani JSON/autentikasi, dll., cukup salin tempel即可 dijalankan.

Bahasa/library target apa saja yang didukung?

Saat ini mendukung 11 target: JavaScript fetch (asli browser), Axios (library HTTP serbaguna Node/browser), Node.js node-fetch, Python requests (library HTTP paling populer Python), Python httpx (library HTTP generasi baru mendukung HTTP/2 dan async), Go net/http (library standar Go), ekstensi PHP cURL, Java OkHttp (library performa tinggi serbaguna Android/backend), C# HttpClient (HTTP client standar .NET), PowerShell Invoke-RestMethod (sering digunakan dalam skrip otomatisasi Windows), wget (alat unduh baris perintah). Jika bahasa yang Anda butuhkan tidak ada dalam daftar (seperti Ruby, Rust reqwest, Dart http, Swift URLSession, dll.), dapat memberikan umpan balik di halaman, kami akan mempertimbangkan penambahan sesuai kebutuhan.

Bagaimana cara menyalin perintah curl dari Chrome DevTools?

Langkah-langkah: 1. Buka Chrome/Edge, tekan F12 untuk membuka DevTools; 2. Beralih ke panel Network; 3. Refresh halaman atau picu permintaan target; 4. Cari permintaan target dalam daftar permintaan (dapat difilter dengan XHR/JS); 5. Klik kanan permintaan tersebut → Copy → pilih「Copy as cURL (bash)」(disarankan versi bash, kompatibilitas terbaik); 6. Tempel ke kolom input alat ini. Hati-hati jangan pilih Copy as fetch (itu kode JS bukan curl). Pengoperasian di Firefox/Safari serupa, semuanya memiliki opsi Copy as cURL.

Penanganan kutip dalam perintah curl sangat rumit, format apa saja yang didukung?

Alat mendukung kutip tunggal, kutip ganda, escape backslash dalam format bash; kutip ganda+escape ^ dari Windows cmd; escape backtick dari PowerShell hampir semuanya dapat dikenali. Disarankan menggunakan format bash (dibungkus kutip tunggal). Perintah multi-baris (backslash \ melanjutkan baris) juga mendukung tempel, alat otomatis menghapus baris baru dan karakter kelanjutan baris. Jika perintah curl Anda sangat kompleks (mengandung variabel shell, substitusi perintah $(...), pipa |, dll.), disarankan menjalankan perintah echo di terminal untuk mencetak curl aktual setelah ekspansi baru disalin, atau sederhanakan sendiri terlebih dahulu (ganti variabel dengan nilai sebenarnya).

Mengapa saat menggunakan -d mengirim JSON di curl, server menerima data acak/400?

Ini adalah salah satu kesalahan curl paling umum. Opsi -d/--data curl memiliki Content-Type default application/x-www-form-urlencoded (format form), bukan application/json. Jika Anda langsung menggunakan curl -d '{"name":"demo"}' url, server akan memparsing sebagai form (parsing gagal atau menerima data kosong). Harus menambahkan secara eksplisit header -H "Content-Type: application/json" baru dapat mengirim JSON dengan benar. Alat ini akan memberikan peringatan oranye saat mendeteksi ada body tetapi tidak ada Content-Type.

Apakah kode yang dihasilkan dapat disalin dan dijalankan langsung?Perlu menginstal dependency apa?

Kode sebagian besar bahasa dapat dijalankan langsung menggunakan library standar (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget semuanya bawaan), tidak perlu instalasi tambahan. Yang lain memerlukan library pihak ketiga: Axios (perlu npm install axios), node-fetch (perlu npm install node-fetch, Node 18+ sudah memiliki fetch bawaan tidak perlu instalasi), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (perlu menambahkan dependency okhttp3 dengan Maven/Gradle). Kode default mencetak kode status dan teks respons, Anda dapat mengubah logika pemrosesan sesuai kebutuhan.

Apakah mendukung unggahan file multipart/form-data (parameter -F)?

Dukungan dasar: Parameter -F akan dikenali sebagai isi permintaan (body), tetapi kode yang dihasilkan saat ini memproses @file sebagai string literal alih-alih unggahan file sebenarnya. Unggahan file perlu membaca konten file lokal, cara penanganan setiap bahasa sangat berbeda (JS menggunakan FormData/FormData.append, Python menggunakan parameter files=, Go menggunakan multipart.Writer). Disarankan merujuk dokumentasi unggahan file library yang sesuai untuk penyesuaian berdasarkan kode yang dihasilkan alat. Versi mendatang akan meningkatkan dukungan multipart.

Apakah mengunggah perintah curl dan data sensitif saya?

Sama sekali tidak. Seluruh proses parsing dan pembuatan kode selesai 100% di browser lokal Anda (JavaScript murni sisi frontend), perintah curl, Token/Cookie/kata sandi dalam header permintaan, data dalam isi permintaan tidak akan dikirim ke server mana pun. Anda dapat memutuskan jaringan untuk menggunakan alat ini, tidak perlu khawatir kebocoran informasi sensitif.

Bagaimana menangani -k/--insecure melewati verifikasi sertifikat dalam kode berbagai bahasa?

Saat mendeteksi parameter -k, alat ini akan membuat konfigurasi melewati verifikasi sertifikat yang sesuai untuk setiap bahasa target: Python requests/httpx menggunakan verify=False; Node.js mengatur process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go membuat kustom tls.Config{InsecureSkipVerify: true}; PHP mengatur CURLOPT_SSL_VERIFYPEER=false dan CURLOPT_SSL_VERIFYHOST=0; Java OkHttp perlu kustom TrustManager (ada komentar peringatan dalam kode, karena kode cukup panjang); C# dapat mengkustomisasi ServerCertificateCustomValidationCallback; PowerShell menggunakan -SkipCertificateCheck (PS6+); wget menggunakan --no-check-certificate; fetch browser tidak dapat melewati sertifikat (batasan keamanan browser, ada komentar penjelasan dalam kode). Catatan: Konfigurasi ini hanya untuk pengujian pengembangan lokal, jangan pernah menonaktifkan verifikasi sertifikat di lingkungan production.

Mengapa kode Go yang dihasilkan tidak mengikuti pengalihan?Sudah menambahkan -L seharusnya mengikuti kan?

Perilaku default net/http Go adalah tidak mengikuti pengalihan (sesuai dengan perilaku default curl, yaitu curl harus menambahkan -L secara eksplisit baru mengikuti). Saat alat mendeteksi parameter -L akan membuat client kosong (http.Client{} memiliki CheckRedirect default nil, yaitu mengikuti 10 kali pengalihan); jika tidak menambahkan -L akan membuat client yang CheckRedirect mengembalikan http.ErrUseLastResponse, yaitu tidak mengikuti pengalihan (sesuai dengan perilaku saat curl tidak menambahkan -L). Jika Anda ingin Go selalu mengikuti pengalihan, dapat langsung menggunakan http.DefaultClient atau mengkustomisasi Client{Timeout: ...} sendiri dalam kode.

Bagaimana menangani permintaan yang perlu login/ada Cookie?

Ada dua cara: ①Salin curl langsung dari DevTools browser yang sudah login (disarankan): Klik kanan permintaan→Copy as cURL, dengan cara ini cookie/header akan otomatis disertakan, tempel dan konversi即可 dijalankan langsung; ②Tentukan nilai Cookie secara manual dalam curl dengan -b/--cookie (-b 'sessionid=abc; token=xyz'), tentukan Basic Auth dengan -u/--user, tentukan Bearer Token dengan -H "Authorization: Bearer xxx", alat akan mengonversi header ini apa adanya. Catatan: Cookie yang disalin dari browser memiliki masa berlaku, mungkin kedaluwarsa setelah beberapa jam dan perlu disalin ulang.

Mengapa isi JSON dalam Python requests menggunakan parameter json= alih-alih data=?

Parameter data library Python requests akan mengodekan dict menurut application/x-www-form-urlencoded, mengirim string apa adanya, sedangkan parameter json akan otomatis menserialisasi dict/list menjadi string JSON, dan otomatis mengatur header Content-Type: application/json (jika Anda tidak mengaturnya sendiri). Saat alat ini mendeteksi Content-Type berisi application/json dan body adalah JSON valid, akan otomatis memparsing JSON menjadi Python dict dan menggunakan parameter json=, membuat kode lebih ringkas, tidak perlu json.dumps manual, dan tidak lupa header Content-Type. Body non-JSON (form/XML/teks biasa) menggunakan parameter data= untuk mengirim string mentah.

Perintah curl panjang dan banyak header, apa yang harus dilakukan saat kode yang dihasilkan membawa semua header?

Perintah curl yang disalin dari DevTools akan berisi banyak header yang ditambahkan browser secara otomatis (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, dll.), sebagian besar header ini dalam kode tidak perlu diatur secara eksplisit (HTTP client akan otomatis menambahkan nilai default yang wajar, seperti Accept-Encoding, Connection, Host, Content-Length, dll.). Disarankan setelah menyalin kode yang dihasilkan, hapus manual header yang tidak perlu, pertahankan setidaknya: Content-Type, Authorization, Cookie (jika perlu), header bisnis kustom. Header berlebih tidak hanya membuat kode terlihat berantakan, tetapi juga dapat menyebabkan perilaku tidak normal (misalnya mengatur Accept-Encoding secara eksplisit tetapi client tidak akan dekompresi otomatis).

Apakah mendukung parameter HTTPS proxy (-x/--proxy)?

Saat ini parameter HTTP proxy (-x/--proxy) belum dikonversi otomatis. Konfigurasi proxy dalam setiap bahasa sangat berbeda (JS fetch tidak memiliki dukungan proxy asli perlu Agent, Python menggunakan parameter proxies=, Go melalui Transport.Proxy, PHP menggunakan CURLOPT_PROXY, C# menggunakan WebProxy, Java menggunakan OkHttpClient.Builder().proxy()). Header proxy (autentikasi proxy itu sendiri) juga perlu ditangani secara terpisah. Parameter terkait proxy dalam versi saat ini akan diabaikan, Anda dapat menambahkan konfigurasi proxy sendiri berdasarkan kode yang dihasilkan, versi mendatang akan meningkatkan dukungan proxy.

Dibandingkan dengan alat online seperti curlconverter.com apa bedanya?

Dibandingkan dengan alat terkenal seperti curlconverter.com, keunggulan curl-to-code GeekFormat adalah: ①Pemrosesan sepenuhnya lokal (logika pemrosesan curlconverter di sisi server atau client), tidak mengunggah data sehingga lebih aman; ②Antarmuka dan penjelasan bahasa Indonesia, ramah bagi developer Indonesia; ③Kode yang dihasilkan lebih sesuai dengan penggunaan nyata production (misalnya Python requests menggunakan parameter json= untuk JSON body alih-alih data=, perilaku default Go sesuai dengan curl, C# menangani Content-Type dengan benar tanpa hardcode application/json); ④Dilengkapi dokumentasi mendalam, FAQ, tabel perbandingan, pemecahan masalah, tidak hanya menghasilkan kode tetapi juga membantu Anda memahami mengapa ditulis seperti itu; ⑤Gratis tanpa iklan, tidak perlu registrasi login, tidak memerlukan permintaan jaringan apa pun dapat digunakan.

术语表

cURL / curl
Alat baris perintah sumber terbuka dan library libcurl, digunakan untuk mengirim permintaan protokol HTTP/HTTPS/FTP dll. melalui URL di baris perintah, adalah alat yang paling sering digunakan developer untuk debug API.
HTTP method
Tindakan permintaan HTTP, yang umum meliputi GET (baca), POST (buat), PUT (pembaruan menyeluruh), PATCH (pembaruan sebagian), DELETE (hapus), HEAD (ambil header), OPTIONS (kueri kemampuan server).
Header permintaan
Pasangan kunci-nilai metadata dalam permintaan HTTP, seperti Content-Type, Authorization, User-Agent, Cookie, Accept, dll., ditentukan dalam curl dengan -H/--header.
Isi permintaan (Body)
Bagian data dari permintaan HTTP, sering digunakan dalam POST/PUT/PATCH, ditentukan dalam curl dengan -d/--data/--data-binary/-F, format umum meliputi JSON, form-urlencoded, multipart/form-data.
Content-Type
Header permintaan/respons, menunjukkan tipe media dari body. application/json berarti JSON, application/x-www-form-urlencoded berarti form encoded URL, multipart/form-data berarti form unggahan file.
Basic Auth
Autentikasi dasar HTTP, mengirimkan nama pengguna dan kata sandi melalui header Authorization: Basic base64(user:pass), ditentukan dalam curl dengan -u user:pass.
Bearer Token
Metode autentikasi berbasis token, diteruskan melalui header Authorization: Bearer <token>, sering digunakan dalam JWT/OAuth2.
User-Agent
Header permintaan, mengidentifikasi jenis client (browser/crawler/skrip), curl default mengirim "curl/namaversi", banyak situs memblokir UA non-browser, sering digunakan -A untuk menentukan.
Cookie
Pasangan kunci-nilai yang dikirim server melalui Set-Cookie dan dikirim kembali browser melalui header Cookie dalam permintaan selanjutnya, digunakan untuk memelihara sesi. curl -b mengirim Cookie, -c menyimpan Cookie.
Referer
Header permintaan, menunjukkan URL halaman asal permintaan saat ini, beberapa pemeriksaan anti-hotlink/CSRF akan memeriksa. Diatur dengan curl -e.
Pengalihan (3xx)
Saat server mengembalikan kode status 301/302/303/307/308, memberitahu browser untuk mengalihkan ke URL baru. curl tidak mengikuti secara default, tambahkan -L/--location untuk mengikuti.
--compressed
Opsi curl, otomatis menambahkan header Accept-Encoding: deflate, gzip dan otomatis mendekompresi respons. Jika tidak diatur, respons mungkin berupa data terkompresi yang tidak dapat dibaca.
-k/--insecure
Opsi curl, melewati verifikasi sertifikat HTTPS, hanya digunakan untuk lingkungan pengujian sertifikat self-signed, dilarang digunakan di lingkungan production.
fetch API
API permintaan HTTP JavaScript asli browser, mengembalikan Promise, didukung di semua browser modern.
Axios
Library HTTP client populer berbasis Promise, dapat digunakan di browser dan Node.js, serialisasi JSON otomatis, interceptor, pembatalan timeout.
OkHttp
Library HTTP client Java/Android dari perusahaan Square, performa tinggi, mendukung HTTP/2, connection pooling, GZIP transparan.
HttpClient (.NET)
HTTP client yang direkomendasikan untuk C#/.NET, dalam namespace System.Net.Http, adalah API standar .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet permintaan HTTP bawaan PowerShell 3.0+, otomatis memparsing respons JSON/XML menjadi objek PowerShell.

Tabel perbandingan opsi curl umum dengan 11 bahasa target

Nilai Content-Type umum dan cara penggunaan curl

Perbandingan tiga format Copy as cURL Chrome DevTools

Troubleshooting