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
Kode yang dihasilkan
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
Cara Penggunaan
- 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
- 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
- Klik tombol contoh untuk referensi: Jika tidak terbiasa dengan format, dapat klik「Contoh 1/2/3」untuk memuat perintah curl prasetel dan melihat hasilnya
- 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
- 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
- Pilih bahasa target: Di area kode target, klik tombol bahasa yang sesuai (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, dll.)
- Salin kode: Klik tombol「Salin kode」, tempel ke proyek/terminal Anda lalu jalankan
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)
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.
Pemecahan Masalah
Setelah menempel perintah curl muncul pesan「URL tidak ditemukan」
Perintah curl kurang sebelum URL (langsung menempel potongan header HTTP) URL terpotong baris tetapi tidak menggunakan backslash untuk melanjutkan baris, alat tidak dapat mengenali URL yang tersambung multi-baris URL berisi karakter khusus (& dll.) terpotong oleh shell URL berada dalam kutip tunggal tetapi ada kutip tunggal bersarang yang tidak di-escape
Kode Python requests yang dihasilkan berjalan lalu mengembalikan 401/403
Cookie/Token kedaluwarsa: Saat menyalin curl dari DevTools, Cookie berlaku pada saat itu, akan kedaluwarsa seiring waktu Kurang User-Agent: Beberapa API memeriksa User-Agent, curl yang disalin dari browser memiliki UA browser, tetapi kode yang dihasilkan mungkin menyimpannya atau menghilangkannya Kurang header Referer/Origin: Beberapa pemeriksaan anti-hotlink/CSRF memeriksa header ini Tidak mengirimkan sessionid dengan benar: Beberapa situs perlu login untuk mendapatkan Cookie dulu baru mengirim permintaan
Mengirim data POST JSON tetapi server tidak menerimanya
Kurang header Content-Type: application/json: Content-Type default curl -d adalah application/x-www-form-urlencoded, bukan JSON Kutip ganda dalam string JSON tidak di-escape: Shell berbeda (bash/cmd/PowerShell) menangani kutip berbeda, menyalin format yang salah akan membuat JSON tidak lengkap JSON dalam kode yang dihasilkan di-escape dua kali (objek di-JSON.stringify lagi) Body berisi karakter Indonesia tetapi tidak dikodekan
Setelah menjalankan kode yang dihasilkan terjadi kesalahan sertifikat SSL/TLS
Situs HTTPS target menggunakan sertifikat self-signed: curl sudah menambahkan -k tetapi kode tidak生效 (periksa apakah konfigurasi melewati sertifikat sudah dibuat) Variabel lingkungan Node.js belum diatur: Saat mendeteksi -k akan membuat process.env.NODE_TLS_REJECT_UNAUTHORIZED='0', perlu diletakkan sebelum pemanggilan fetch SSL Inspection (sertifikat man-in-the-middle) proxy perusahaan: Perlu menambahkan sertifikat root perusahaan ke trust store alih-alih menonaktifkan verifikasi verify=False Python hanya berlaku untuk requests, urllib3 lapisan bawah masih akan melaporkan InsecureRequestWarning
Hasil respons kode yang dihasilkan berbeda dengan curl
Header yang ditambahkan otomatis hilang: Browser akan otomatis menambahkan header seperti Host/Connection/Accept/Accept-Encoding/Accept-Language/Sec-Fetch-*, mempertahankan atau tidak mempertahankan header ini akan memengaruhi respons Penanganan pengalihan tidak konsisten: fetch mengikuti pengalihan default, Go tidak mengikuti default, alat ini akan membuat konfigurasi yang sesuai berdasarkan parameter -L Perbedaan dekompresi: Saat --compressed, beberapa library perlu konfigurasi eksplisit untuk dekompresi otomatis HTTP/2 vs HTTP/1.1: curl bernegosiasi HTTP/2 secara default, beberapa server lama sensitif terhadap versi HTTP Cookie Jar: curl -b mengirim Cookie manual setiap kali, beberapa library mengelola Cookie otomatis menyebabkan Cookie berubah dalam beberapa siklus permintaan
Perintah curl yang disalin terlalu panjang menyebabkan tempel terpotong/error
Terlalu banyak header permintaan (misalnya browser otomatis menambahkan puluhan header): Hapus manual header yang tidak perlu (header tidak esensial seperti sec-ch-ua, sec-fetch-*, Accept, Accept-Language, dll.) File berkode Base64/Body besar membuat perintah terlalu panjang: Beralih menggunakan --data-binary @file untuk membaca body dari file Batasan panjang baris perintah Windows cmd (8191 karakter): Beralih menggunakan PowerShell atau salin curl format bash di bawah WSL Terpotong oleh karakter kosong saat menyalin: Pastikan menyalin sepenuhnya dari DevTools dengan klik kanan
Glosarium
- 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
| Opsi curl | Fungsi | JS fetch | Axios | Python requests | Go net/http | PHP cURL | Java OkHttp | C# HttpClient | PowerShell | wget |
|---|---|---|---|---|---|---|---|---|---|---|
| -X METHOD | Menentukan HTTP method | method: 'POST' | method: 'post' | requests.request('POST') | http.NewRequest('POST') | CURLOPT_CUSTOMREQUEST | .method() | HttpMethod.Post | -Method POST | --method=POST |
| -H 'K: V' | Menambahkan header | headers: {} | headers: {} | headers={} | req.Header.Set | CURLOPT_HTTPHEADER | .addHeader() | .Headers.TryAddWithoutValidation | $headers=@{} | --header= |
| -d 'data' | Isi permintaan | body: data | data: data | data=/json= | strings.NewReader | CURLOPT_POSTFIELDS | RequestBody.create | new StringContent | -Body | --body-data= |
| -u user:pass | Basic Auth | Header Authorization | auth:{} | auth=(u,p) | req.SetBasicAuth | CURLOPT_USERPWD | Credentials.basic | new NetworkCredential | Otomatis jadi Header | --user/--password |
| -L | Mengikuti pengalihan | redirect:'follow' | maxRedirects: N | allow_redirects=True | CheckRedirect default | CURLOPT_FOLLOWLOCATION | .followRedirects | AllowAutoRedirect=true | Mengikuti default | -L |
| -k | Melewati verifikasi sertifikat | Browser tidak mendukung | httpsAgent | verify=False | TLSClientConfig | CURLOPT_SSL_VERIFYPEER=false | Perlu kustom TrustManager | ServerCertificateCustomValidationCallback | -SkipCertificateCheck | --no-check-certificate |
| --compressed | Menerima kompresi | Mendukung default | Dekompresi otomatis | Dekompresi otomatis | Perlu gzip manual | Dekompresi otomatis | Mendukung default | AutomaticDecompression | -TransferEncoding | Tidak dekompresi default |
| -A UA | User-Agent | Header User-Agent | headers | headers={} | req.Header.Set | CURLOPT_USERAGENT | .header() | Default | -UserAgent | --user-agent= |
| -b cookie | Cookie | Header Cookie | headers/withCredentials | cookies={} | req.Header.Set | CURLOPT_COOKIE | .header() | CookieContainer | -WebSession | --header= |
| -m SECS | Timeout | AbortController | timeout:N | timeout=N | http.Client.Timeout | CURLOPT_TIMEOUT | .callTimeout | client.Timeout | -TimeoutSec | --timeout= |
Nilai Content-Type umum dan cara penggunaan curl
| Content-Type | Tujuan | Contoh curl | Catatan |
|---|---|---|---|
| application/json | Mengirim data JSON | curl -H 'Content-Type: application/json' -d '{"a":1}' | Tipe API paling umum, -d tidak mengatur header ini secara default, perlu menentukan -H secara eksplisit |
| application/x-www-form-urlencoded | Form encoded URL | curl -d 'name=a&age=1' | Saat -d tidak menambahkan -H, default adalah tipe ini |
| multipart/form-data | Unggah file | curl -F 'file=@a.png' -F 'name=a' | -F otomatis mengatur Content-Type dan boundary ini |
| text/plain | Teks biasa | curl -H 'Content-Type: text/plain' -d 'hello' | Teks biasa, jarang digunakan dalam API |
| application/octet-stream | Data biner | curl --data-binary @file.bin | Gunakan --data-binary mengirim biner mentah |
| application/xml | Data XML | curl -H 'Content-Type: application/xml' -d '<x/>' | Digunakan di SOAP/API perusahaan lama |
Perbandingan tiga format Copy as cURL Chrome DevTools
| Format | Gaya kutip | Karakter escape | Situasi yang cocok |
|---|---|---|---|
| Copy as cURL (bash) | Kutip tunggal '...' | Escape kutip tunggal dengan \' | Linux/macOS/WSL/Git Bash, disarankan tempel ke alat ini |
| Copy as cURL (cmd) | Kutip ganda "..." | Escape karakter khusus dengan ^ | Prompt perintah Windows cmd.exe |
| Copy as cURL (PowerShell) | Kutip ganda/backtick | Escape dengan ` | Windows PowerShell 5/7 |
| Copy as fetch | JS template string | Tidak perlu escape | Jalankan langsung di Console browser |
- Generator Auth Header
- Parser Cache-Control
- Parser Content-Disposition
- Generator CORS Header
- Pemeriksa CORS Cross-Origin
- Generator CSP
- Konverter cURL ke Kode
- Pemeriksaan Propagasi DNS Global
- Pencarian DNS
- Parser Header Forwarded
- Generator Tag Hreflang
- Analisis HSTS
- Parser Kuki HTTP
- Pemeriksa Header HTTP
- Penguji Request HTTP
- Pencarian Kode Status HTTP
- Pencarian IP
- Konverter IPv4
- Ekspander Rentang IPv4
- Kotak Alat IPv6
- Parser Header Link
- MX Lookup
- Port Checker
- Pembuat Parameter URL
- Rate Limit Header Parser
- Pemeriksa Rantai Pengalihan
- Generator Robots.txt
- Robots.txt Inspector
- Security Headers Checker
- Generator Security.txt
- Parser Set-Cookie
- Site Network Audit
- Generator Sitemap
- Sitemap Inspector
- Pemeriksa Sertifikat SSL
- Kalkulator Subnet
- URL Parser
- parser User-Agent
- UTM Link Generator
- WebSocket Tester
- What Is My IP?
- Pencarian WHOIS