cURL'den Koda Dönüştürücü
cURL komutu girişi
Bir cURL komutu yapıştırın, URL'yi, yöntemi, üstbilgileri ve istek gövdesini otomatik olarak ayrıştırın ve JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget ile çalıştırılabilir kod oluşturun.
Ayrıştırılmış istek
Oluşturulan kod
curl komutunu yapıştırın, saniyeler içinde 11 dilde çalıştırılabilir HTTP istek kodu elde edin.
İlgili Öneriler
Kullanım senaryoları
- Chrome DevTools Network panelinde isteğe sağ tıklayıp「Copy as cURL」seçtikten sonra, bu araca yapıştırarak doğrudan projenizin kullandığı dilin koduna dönüştürün, elle istek yazmaktan 10 kat daha hızlı
- Üçüncü taraf API'lerini entegre ederken dokümantasyonda curl örneği verildiğinde, hızla Python requests/Java OkHttp/C# HttpClient koduna dönüştürüp projenize gömün
- Üretim ortamı arayüzlerini hata ayıklarken yakalama araçlarından (Charles/mitmproxy/Wireshark) curl komutunu kopyalayın, birim test koduna dönüştürerek doğrudan doğrulayın
- API dokümantasyonu yazarken birden fazla dil örneği arasında hızla geçiş yapın, farklı teknoloji yığınlarındaki okuyuculara hazır çalıştırılabilir örnek kod sağlayın
- Çevrimiçi istek sorunlarını giderirken, sorunu curl ile tekrarladıktan sonra kod biçimine dönüştürüp iş arkadaşlarınıza gönderin veya Issue açın, başkalarının doğrudan tekrarlamasını kolaylaştırın
- Diller arası geliştirme yaparken (örneğin Python'dan Go projesine geçerken), mevcut curl isteklerini hızla yeni dilin HTTP istemci çağrı koduna dönüştürün, dokümantasyon arama süresinden tasarruf edin
- Shell betiklerinde curl komutlarını Windows operasyon iş arkadaşlarınız için PowerShell Invoke-RestMethod'a dönüştürün veya tam tersi
- HTTP protokolünü öğrenin: Aynı isteğin farklı dillerdeki uygulamalarını karşılaştırarak, her HTTP istemci kütüphanesinin API farklılıklarını anlayın
- curl -X POST -d 'json' komutunu doğru Content-Type ve JSON serileştirme ile koda hızla dönüştürün, elle string birleştirme hatalarından kaçının
- CI/CD betiklerinde API çağrısı gerektiğinde, yerel olarak hata ayıkladığınız curl komutunu karşılık gelen betik dili koduna dönüştürüp işlem hattına gömün
Nasıl Kullanılır
- curl komutunu edinin: Tarayıcı DevTools Network panelinde isteğe sağ tıklayın → Copy → Copy as cURL (bash); veya Postman/Charles/mitmproxy gibi yakalama araçlarından curl dışa aktarın; veya kendi curl komutunuzu yazın
- Giriş kutusuna yapıştırın: curl komutunu en üstteki giriş alanına yapıştırın, tek satırlı/çok satırlı (ters eğik çizgi ile devam eden) komutları destekler, satır sonları otomatik olarak temizlenir
- Örnek düğmesine tıklayarak referans alın: Biçimi bilmiyorsanız「Örnek 1/2/3」düğmelerine tıklayarak önceden ayarlanmış curl komutlarını yükleyip efekti görün
- Ayrıştırma sonuçlarını görüntüleyin: Ayrıştırma sonucu alanında URL, Header sayısı, Body karakter sayısı ve sıkıştırma/yönlendirme/sertifika atlama/Basic auth gibi rozetler gösterilir, sorun varsa turuncu uyarı görüntülenir
- Gerekirse metodu ayarlayın: Otomatik tanınan metod yanlışsa (örneğin curl'e -X POST eklenmemiş ama POST olması gerekiyorsa), açılır menüden HTTP metodunu manuel olarak değiştirin
- Hedef dili seçin: Hedef kod alanında karşılık gelen dil düğmesine tıklayın (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget vb.)
- Kodu kopyalayın:「Kodu Kopyala」düğmesine tıklayın, projenize/terminal'inize yapıştırıp çalıştırın
Özellikler
- 11 hedef dil/kütüphane: Frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), komut satırı (wget) dahil ana teknoloji yığınlarını tek noktadan kapsar
- Akıllı curl komut ayrıştırma: URL, HTTP metodu, istek başlıkları, istek gövdesini otomatik tanır, tek/çift tırnak, ters eğik çizgi kaçışları, çok satırlı komut birleştirmeyi (ters eğik çizgi ile satır sonu) destekler
- Yaygın curl parametrelerinin tam desteği: -X/--request metod belirtme, -H/--header istek başlığı, -d/--data/-F form/JSON istek gövdesi, -u/--user Basic auth, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location yönlendirme takibi, --compressed otomatik sıkıştırma açma, -k/--insecure sertifika doğrulamasını atlama, -I/--head HEAD isteği
- JSON istek gövdesi akıllı tanıma: Content-Type application/json olarak algılandığında otomatik olarak JSON.parse/JSON.stringify/requests(json=)/json= serileştirmesi kullanır, üretilen kod string yerine doğrudan nesne kullanır, dil alışkanlıklarına daha uygundur
- Basic auth otomatik dönüşüm: -u user:pass algılandığında otomatik olarak Authorization: Basic <base64> istek başlığı üretir, hedef dilde yerel auth mekanizması kullanılır (Python auth=, OkHttp credentials, C# credentials vb.)
- Güvenlik bayrağı rozet uyarıları: --compressed/-L/-k/-u gibi parametreleri otomatik algılar, ayrıştırma sonuçlarında rozetlerle belirgin şekilde gösterir
- İstek metodu manuel olarak değiştirilebilir: curl metodu otomatik ayrıştırıldıktan sonra, kullanıcının açılır menüden manuel olarak metodu değiştirmesine (GET/POST/PUT vb. 7 tür) izin verir, karşılık gelen kodu anında görüntüler
- String kaçış güvenliği: Her dil için kod üretirken dilin yerel string sabiti kullanılır (Python üçlü tırnak/ters eğik çizgi kaçışı, Go ters tırnak ham string, C# @"", PHP tek tırnak, Java çift tırnak kaçışı), kod çalıştırıldığında sözdizimi hatası oluşmasını önler
- Ayrıştırma hatası uyarısı: Geçersiz curl komutu girildiğinde (URL eksikliği, curl ile başlamama, POST için body yokluğu vb.) turuncu uyarı rozetiyle belirli sorun belirtilir
- 3 örnek tek tıkla yüklenir: GET+Token auth, POST+JSON, Basic auth+yönlendirme takibi dahil 3 tipik örnek sunulur, aracın yeteneklerini hızla görmenizi sağlar
- Tek tıkla girdiyi temizle: Clear düğmesi hızla sıfırlar, yeni komut yapıştırdığınızda kalıntı kalmaz
- Tamamen yerel işleme: curl komutları ve istek içeriği tamamen tarayıcıda yerel olarak ayrıştırılır ve dönüştürülür, hiçbir sunucuya yüklenmez, hassas Token/şifre sızdırılmaz
- Tek tıkla kod kopyalama: Kod üretildikten sonra Copy düğmesine tıklayarak panoya kopyalayın, doğrudan projenize yapıştırıp çalıştırın
- HTTPS güvensiz mod uyumu: -k/--insecure parametresi Node/Go/Python/PHP/C#/PowerShell gibi dillerde karşılık gelen TLS sertifika doğrulamasını atlama yapılandırması üretir (wget --no-check-certificate kullanır, C# ServicePointManager ipucu bırakır, Node NODE_TLS_REJECT_UNAUTHORIZED ayarlar)
Sık Sorulan Sorular
cURL'den koda dönüştürücü ne işe yarar? Neden doğrudan curl komutu kullanmıyorsunuz?
Kodda doğrudan curl komutunu çağırmak (shell_exec, subprocess.run gibi) alt süreç başlatmayı gerektirir, hem güvensizdir hem de hataları işlemek, yanıt başlıklarını almak, tür dönüşümü yapmak zordur. Üretim kodu programlama dilinin yerel HTTP istemcisini kullanmalıdır (Python requests, Java OkHttp, JS fetch vb.). curl-to-code'un değeri, DevTools/yakalama araçlarından kopyaladığınız curl komutunu otomatik olarak karşılık gelen dilin HTTP istemci koduna çevirmesi, API dokümantasyonu arama, manuel tırnak kaçırma, JSON/auth işleme gibi mekanik işçilikten kurtarması, kopyalayıp yapıştırarak çalıştırmanızdır.
Hangi hedef diller/kütüphaneler destekleniyor?
Şu anda 11 hedef desteklenmektedir: JavaScript fetch (tarayıcı yerel), Axios (Node/tarayıcı ortak HTTP kütüphanesi), Node.js node-fetch, Python requests (Python'un en popüler HTTP kütüphanesi), Python httpx (yeni nesil HTTP/2 ve async destekli HTTP kütüphanesi), Go net/http (Go standart kütüphanesi), PHP cURL uzantısı, Java OkHttp (Android/arka uç ortak yüksek performanslı kütüphane), C# HttpClient (.NET standart HTTP istemcisi), PowerShell Invoke-RestMethod (Windows otomasyon betikleri için yaygın), wget (komut satırı indirme aracı). Listede olmayan bir dile ihtiyacınız varsa (Ruby, Rust reqwest, Dart http, Swift URLSession vb.), sayfadan geri bildirimde bulunabilirsiniz, talebe göre ekleriz.
Chrome DevTools'tan curl komutu nasıl kopyalanır?
Adımlar: 1. Chrome/Edge'i açın, F12 tuşuna basarak DevTools'u açın; 2. Network paneline geçin; 3. Sayfayı yenileyin veya hedef isteği tetikleyin; 4. İstek listesinde hedef isteği bulun (XHR/JS ile filtreleyebilirsiniz); 5. İsteğe sağ tıklayın → Copy →「Copy as cURL (bash)」seçin (bash sürümü önerilir, uyumluluk en iyisidir); 6. Bu aracın giriş kutusuna yapıştırın. Copy as fetch'i seçmeyin (bu JS kodudur, curl değildir). Firefox/Safari'de işlem benzerdir, hepsinde Copy as cURL seçeneği vardır.
curl komutunun tırnak işleme çok zahmetli, hangi biçimler destekleniyor?
Araç bash stili tek tırnak, çift tırnak, ters eğik çizgi kaçışlarını destekler; Windows cmd çift tırnak+^kaçışını; PowerShell ters tırnak kaçışını temelde tanır. Bash biçimini kullanmanız önerilir (tek tırnakla sarma). Çok satırlı komutlar (ters eğik çizgi\ ile devam eden) da yapıştırma için desteklenir, araç satır sonlarını ve devam karakterlerini otomatik olarak temizler. curl komutunuz özellikle karmaşıksa (shell değişkenleri, komut değiştirme $(...), boru | vb. içeriyorsa), önce terminalde echo komutu yürüterek açılmış gerçek curl'ü yazdırıp kopyalamanız veya önce manuel olarak basitleştirmeniz (değişkenleri gerçek değerlerle değiştirmeniz) önerilir.
curl'de -d ile JSON gönderdiğimde neden sunucu bozuk/400 alıyor?
Bu en yaygın curl hatalarından biridir. curl'ün -d/--data seçeneğinin varsayılan Content-Type'ı application/x-www-form-urlencoded'dur (form biçimi), application/json değildir. Doğrudan curl -d '{"name":"demo"}' url yaparsanız, sunucu form olarak ayrıştırır (ayrıştırma başarısız olur veya boş veri alır). JSON'u doğru göndermek için açıkça -H "Content-Type: application/json" başlığı eklenmesi gerekir. Bu araç body algıladığında ancak Content-Type olmadığında turuncu uyarı ile bildirir.
Üretilen kod doğrudan kopyalanıp çalıştırılabilir mi? Hangi bağımlılıkları yüklemem gerekir?
Çoğu dilin kodu standart kütüphane ile doğrudan çalıştırılabilir (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget hepsi yerleşiktir), ek yükleme gerektirmez. Diğerleri üçüncü taraf kütüphane gerektirir: Axios (npm install axios gerekir), node-fetch (npm install node-fetch gerekir, Node 18+ yerleşik fetch ile gelir yükleme gerekmez), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (Maven/Gradle ile okhttp3 bağımlılığını eklemek gerekir). Kod varsayılan olarak yanıt durum kodunu ve metnini yazdırır, işleme mantığını ihtiyaca göre değiştirebilirsiniz.
multipart/form-data dosya yüklemeyi (-F parametresi) destekliyor mu?
Temel destek: -F parametresi istek gövdesi (body) olarak tanınır, ancak üretilen kod şu anda @file'ı gerçek dosya yükleme yerine gerçek dize olarak işler. Dosya yükleme yerel dosya içeriğini okumayı gerektirir, her dilin işleme biçimi büyük farklılık gösterir (JS FormData/FormData.append kullanır, Python files= parametresi kullanır, Go multipart.Writer kullanır). Aracın ürettiği kodu temel alarak karşılık gelen kütüphanenin dosya yükleme dokümantasyonuna başvurup ayarlama yapmanız önerilir. Sonraki sürümlerde multipart desteği güçlendirilecektir.
curl komutlarımı ve hassas verilerimi yükler mi?
Kesinlikle hayır. Tüm ayrıştırma ve kod üretme süreci %100 tarayıcınızda yerel olarak tamamlanır (saf ön uç JavaScript), curl komutları, istek başlıklarındaki Token/Cookie/şifreler, istek gövdesindeki veriler hiçbir sunucuya gönderilmez. Bu aracı çevrimdışı olarak kullanabilirsiniz, hassas bilgi sızıntısı endişesi yoktur.
-k/--insecure sertifika doğrulamasını atlama her dil kodunda nasıl işlenir?
-k parametresi algılandığında, bu araç her hedef dil için karşılık gelen sertifika doğrulamasını atlama yapılandırması üretir: Python requests/httpx verify=False kullanır; Node.js process.env.NODE_TLS_REJECT_UNAUTHORIZED='0' ayarlar; Go özel tls.Config{InsecureSkipVerify: true} oluşturur; PHP CURLOPT_SSL_VERIFYPEER=false ve CURLOPT_SSL_VERIFYHOST=0 ayarlar; Java OkHttp için özel TrustManager gerekir (kod uzun olduğundan yorumla ipucu verilir); C# özel ServerCertificateCustomValidationCallback tanımlayabilir; PowerShell -SkipCertificateCheck kullanır (PS6+); wget --no-check-certificate kullanır; tarayıcı fetch sertifikayı atlayamaz (tarayıcı güvenlik kısıtlaması, kodda yorumla açıklanır). Not: Bu yapılandırmalar yalnızca yerel geliştirme testi içindir, üretim ortamında kesinlikle sertifika doğrulamasını devre dışı bırakmayın.
Üretilen Go kodu neden yönlendirmeyi takip etmiyor? -L eklendiğinde takip etmesi gerekmez mi?
Go'nun net/http varsayılan davranışı yönlendirmeyi takip etmemektir (curl'ün varsayılan davranışıyla tutarlı, curl'ün açıkça -L eklemesi gerekir). Araç -L parametresini algıladığında boş client üretir (http.Client{} varsayılan CheckRedirect nil'dir, yani 10 yönlendirmeye kadar takip eder); -L eklenmediğinde CheckRedirect http.ErrUseLastResponse döndüren client üretir, yönlendirmeyi takip etmez (curl'ün -L olmadan davranışıyla tutarlı). Go'nun her zaman yönlendirmeyi takip etmesini istiyorsanız, kodda doğrudan http.DefaultClient kullanabilir veya özel Client{Timeout: ...} tanımlayabilirsiniz.
Giriş gerektiren/Cookie'li istekler nasıl işlenir?
İki yol vardır:①Giriş yapmış tarayıcının DevTools'undan doğrudan curl kopyalayın (önerilen): İsteğe sağ tıklayın→Copy as cURL, böylece cookie/header otomatik olarak dahil edilir, yapıştırıp dönüştürdükten sonra doğrudan çalıştırabilirsiniz;②curl'de -b/--cookie ile manuel olarak Cookie değeri belirtin (-b 'sessionid=abc; token=xyz'), -u/--user ile Basic auth belirtin, -H "Authorization: Bearer xxx" ile Bearer Token belirtin, araç bu başlıkları aynen dönüştürür. Not: Tarayıcıdan kopyalanan Cookie'nin geçerlilik süresi vardır, birkaç saat sonra süresi dolabilir ve yeniden kopyalamanız gerekebilir.
Python requests'te JSON istek gövdesi neden data= yerine json= parametresi kullanıyor?
Python requests kütüphanesinin data parametresi dict'i application/x-www-form-urlencoded olarak kodlar, string'i aynen gönderir, json parametresi ise dict/list'i otomatik olarak JSON string'ine serileştirir ve Content-Type: application/json başlığını otomatik olarak ayarlar (manuel olarak ayarlamadıysanız). Bu araç Content-Type'ın application/json içerdiğini ve body'nin geçerli JSON olduğunu algıladığında, JSON'u otomatik olarak Python dict olarak ayrıştırır ve json= parametresi kullanır, böylece kod daha temiz olur, manuel json.dumps gerekmez, Content-Type başlığını unutmazsınız. JSON olmayan body (form/XML/düz metin) data= parametresiyle ham string olarak gönderilir.
curl komutu çok uzun ve çok başlığı var, üretilen kod tüm başlıkları taşıyorsa ne yapmalıyım?
DevTools'tan kopyalanan curl komutu tarayıcının otomatik olarak eklediği çok sayıda başlık içerir (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests vb.), bu başlıkların çoğu kodda açıkça ayarlanmasına gerek yoktur (HTTP istemcisi Accept-Encoding, Connection, Host, Content-Length vb. gibi mantıklı varsayılan değerleri otomatik olarak ekler). Üretilen kodu kopyaladıktan sonra, gereksiz başlıkları manuel olarak silmeniz önerilir, en azından şunları koruyun: Content-Type, Authorization, Cookie (gerekliyse), özel iş başlıkları. Fazla başlıklar sadece kodu çirkinleştirmekle kalmaz, davranış anormalliklerine de neden olabilir (örneğin Accept-Encoding'i açıkça ayarlamak ama istemcinin otomatik olarak sıkıştırma açmaması).
HTTPS proxy (-x/--proxy) parametresini destekliyor mu?
Şu anda HTTP proxy (-x/--proxy) parametresi otomatik olarak dönüştürülmüyor. Proxy yapılandırması her dilde büyük farklılık gösterir (JS fetch'in yerel proxy desteği yoktur Agent gerekir, Python proxies= parametresi kullanır, Go Transport.Proxy aracılığıyla, PHP CURLOPT_PROXY kullanır, C# WebProxy kullanır, Java OkHttpClient.Builder().proxy() kullanır). Proxy başlıkları (proxy'nin kendi kimlik doğrulaması) da ayrı olarak işlenmelidir. Geçerli sürümde proxy ile ilgili parametreler yok sayılır, üretilen kodu temel alarak manuel olarak proxy yapılandırması ekleyebilirsiniz, sonraki sürümlerde proxy desteği güçlendirilecektir.
curlconverter.com gibi çevrimiçi araçlarla karşılaştırıldığında ne farkı var?
curlconverter.com gibi tanınmış araçlarla karşılaştırıldığında, GeekFormat'ın curl-to-code avantajları:①Tamamen yerel işleme (curlconverter'ın işleme mantığı sunucu tarafında veya istemci tarafındadır), veri yüklemez daha güvenlidir;②Türkçe arayüz ve Türkçe açıklamalar, yerel geliştiricilere dostça;③Üretilen kod gerçek üretim kullanımına daha uygundur (örneğin Python requests JSON body için data= yerine json= parametresi kullanır, Go varsayılan davranışı curl ile hizalı, C# Content-Type'ı doğru işler application/json'u sabit kodlamaz);④Eşlik eden derinlemesine dokümantasyon, SSS, karşılaştırma tabloları, sorun giderme, sadece kod üretmekle kalmaz neden böyle yazıldığını anlamanıza yardımcı olur;⑤Ücretsiz reklamsız, kayıt veya giriş gerekmez, herhangi bir ağ isteği olmadan kullanılabilir.
Sorun Giderme
curl komutunu yapıştırdıktan sonra「URL bulunamadı」uyarısı çıkıyor
URL'den önce curl komutu eksik (doğrudan bir HTTP başlığı yapıştırılmış) URL satır sonu yapılmış ancak ters eğik çizgi ile devam ettirilmemiş, araç çok satırlı birleştirilmiş URL'yi tanıyamıyor URL'deki özel karakterler (& vb.) shell tarafından kesilmiş URL tek tırnak içinde ancak iç içe geçmiş tek tırnaklar kaçırılmamış
Üretilen Python requests kodu çalıştığında 401/403 döndürüyor
Cookie/Token süresi dolmuş: DevTools'tan curl kopyaladığınızda Cookie o anda geçerliydi, bir süre sonra süresi dolar User-Agent eksik: Bazı API'ler User-Agent'ı doğrular, tarayıcıdan kopyalanan curl tarayıcı UA'sı içerir ancak üretilen kod koruyabilir veya kaybedebilir Referer/Origin başlığı eksik: Bazı hotlink koruması/CSRF doğrulaması bu başlıkları kontrol eder sessionid doğru iletilmemiş: Bazı siteler önce giriş yapıp Cookie almanızı sonra istek yapmanızı gerektirir
POST JSON verisi gönderiliyor ama sunucu alamıyor
Content-Type: application/json başlığı eksik: curl -d varsayılan Content-Type application/x-www-form-urlencoded'dur, JSON değildir JSON string'indeki çift tırnaklar kaçırılmamış: Farklı Shell'lerin (bash/cmd/PowerShell) tırnak işleme biçimi farklıdır, yanlış biçimde kopyalama JSON'un eksik olmasına neden olur Üretilen kodda JSON çift kaçırılmış (nesne tekrar JSON.stringify yapılmış) Body'de Çince karakterler var ancak kodlanmamış
Üretilen kod çalıştırıldıktan sonra SSL/TLS sertifika hatası oluşuyor
Hedef HTTPS sitesi kendinden imzalı sertifika kullanıyor: curl'e -k eklenmiş ancak kodda etkili olmamış (sertifika atlama yapılandırması üretilip üretilmediğini kontrol edin) Node.js ortam değişkeni ayarlanmamış: -k algılandığında process.env.NODE_TLS_REJECT_UNAUTHORIZED='0' üretilir, fetch çağrısından önce yerleştirilmesi gerekir Şirket proxy SSL Inspection (ortadaki adam sertifikası): Şirket kök sertifikasını güven deposuna eklemek gerekir, doğrulamayı devre dışı bırakmak yerine Python'daki verify=False yalnızca requests için geçerlidir, temel urllib3 hala InsecureRequestWarning verir
Üretilen kodun yanıt sonucu curl'den farklı
Otomatik eklenen istek başlıkları kaybolmuş: Tarayıcı otomatik olarak Host/Connection/Accept/Accept-Encoding/Accept-Language/Sec-Fetch-* vb. başlıklar ekler, bu başlıkların korunup korunmaması yanıtı etkiler Yönlendirme işleme tutarsız: fetch varsayılan olarak yönlendirmeyi takip eder, Go varsayılan olarak takip etmez, bu araç -L parametresine göre karşılık gelen yapılandırma üretir Sıkıştırma açma farklılıkları: --compressed olduğunda bazı kütüphanelerde otomatik sıkıştırma açma için açık yapılandırma gerekir HTTP/2 vs HTTP/1.1: curl varsayılan olarak HTTP/2 anlaşması yapar, bazı eski sunucular HTTP sürümüne duyarlıdır Cookie Jar: curl -b ile Cookie her seferinde manuel olarak gönderilir, bazı kütüphaneler Cookie'yi otomatik yönetir ve çok turlu isteklerde Cookie değişir
Kopyalanan curl komutu çok uzun olduğunda yapıştırma kesiliyor/hata veriyor
Çok fazla istek başlığı var (örneğin tarayıcının otomatik olarak onlarca başlık eklemesi): Gereksiz başlıkları manuel olarak silin (sec-ch-ua, sec-fetch-*, Accept, Accept-Language gibi zorunlu olmayan başlıklar) Base64 kodlu dosya/büyük Body komutu çok uzun yapıyor: --data-binary @file ile body'yi dosyadan okumayı kullanın Windows cmd komut satırı uzunluk sınırı (8191 karakter): PowerShell veya WSL altında bash biçimi curl kopyalamayı kullanın Kopyalama sırasında boşluk karakterleriyle kesilmiş: DevTools'tan sağ tıklayarak tam olarak kopyaladığınızdan emin olun
Sözlük
- cURL / curl
- Açık kaynaklı komut satırı aracı ve libcurl kütüphanesi, komut satırında URL üzerinden HTTP/HTTPS/FTP gibi protokol istekleri göndermek için kullanılır, geliştiricilerin API hata ayıklaması için en yaygın kullanılan araçtır.
- HTTP metodu
- HTTP istek eylemi, yaygın olanlar GET (okuma), POST (oluşturma), PUT (tüm güncelleme), PATCH (kısmi güncelleme), DELETE (silme), HEAD (başlık alma), OPTIONS (sunucu yeteneklerini sorgulama).
- İstek başlığı (Header)
- HTTP isteğindeki meta veri anahtar-değer çiftleri, Content-Type, Authorization, User-Agent, Cookie, Accept vb., curl'de -H/--header ile belirtilir.
- İstek gövdesi (Body)
- HTTP isteğinin veri bölümü, POST/PUT/PATCH için yaygındır, curl'de -d/--data/--data-binary/-F ile belirtilir, yaygın biçimler JSON, form-urlencoded, multipart/form-data.
- Content-Type
- İstek/yanıt başlığı, body'nin medya türünü belirtir. application/json JSON'u, application/x-www-form-urlencoded URL kodlu formu, multipart/form-data dosya yükleme formunu belirtir.
- Basic auth
- HTTP temel kimlik doğrulaması, Authorization: Basic base64(user:pass) başlığı aracılığıyla kullanıcı adı parola iletir, curl'de -u user:pass ile belirtilir.
- Bearer Token
- Belirteç tabanlı kimlik doğrulama yöntemi, Authorization: Bearer <token> başlığı aracılığıyla iletilir, JWT/OAuth2'de yaygın olarak kullanılır.
- User-Agent
- İstemci türünü (tarayıcı/tarayıcı bot/betik) belirten istek başlığı, curl varsayılan olarak "curl/sürüm" gönderir, birçok web sitesi tarayıcı olmayan UA'ları engeller, yaygın olarak -A ile belirtilir.
- Cookie
- Sunucunun Set-Cookie aracılığıyla gönderdiği, tarayıcının sonraki isteklerde Cookie başlığı aracılığıyla geri gönderdiği anahtar-değer çiftleri, oturum sürdürme için kullanılır. curl -b Cookie gönderir, -c Cookie'yi kaydeder.
- Referer
- Mevcut isteğin kaynak sayfa URL'sini belirten istek başlığı, bazı hotlink koruması/CSRF doğrulaması kontrol eder. curl -e ile ayarlanır.
- Yönlendirme (3xx)
- Sunucu 301/302/303/307/308 durum kodu döndürdüğünde tarayıcıya yeni URL'ye atlamasını söyler. curl varsayılan olarak takip etmez, -L/--location ile takip eder.
- --compressed
- curl seçeneği, otomatik olarak Accept-Encoding: deflate, gzip başlığı ekler ve yanıtı otomatik olarak sıkıştırmasını açar. Ayarlanmazsa yanıt sıkıştırılmış bozuk veriler olabilir.
- -k/--insecure
- curl seçeneği, HTTPS sertifika doğrulamasını atlar, yalnızca kendinden imzalı sertifika test ortamları için kullanılır, üretim ortamında kullanılması yasaktır.
- fetch API
- Tarayıcının yerel JavaScript HTTP istek API'si, Promise döndürür, modern tarayıcılar tarafından desteklenir.
- Axios
- Promise tabanlı popüler HTTP istemci kütüphanesi, tarayıcı ve Node.js için ortaktır, otomatik JSON serileştirme, kesiciler, zaman aşımı iptali.
- OkHttp
- Square tarafından üretilen Java/Android HTTP istemci kütüphanesi, yüksek performans, HTTP/2 desteği, bağlantı havuzu, şeffaf GZIP.
- HttpClient (.NET)
- C#/.NET için önerilen HTTP istemci, System.Net.Http ad alanı, .NET Core/.NET 5+ standart API.
- Invoke-RestMethod
- PowerShell 3.0+ yerleşik HTTP istek cmdlet'i, JSON/XML yanıtını otomatik olarak PowerShell nesnesi olarak ayrıştırır.
cURL yaygın seçenekleri ve 11 hedef dil karşılaştırma tablosu
| curl seçeneği | İşlev | JS fetch | Axios | Python requests | Go net/http | PHP cURL | Java OkHttp | C# HttpClient | PowerShell | wget |
|---|---|---|---|---|---|---|---|---|---|---|
| -X METHOD | HTTP metodu belirtme | method: 'POST' | method: 'post' | requests.request('POST') | http.NewRequest('POST') | CURLOPT_CUSTOMREQUEST | .method() | HttpMethod.Post | -Method POST | --method=POST |
| -H 'K: V' | İstek başlığı ekleme | headers: {} | headers: {} | headers={} | req.Header.Set | CURLOPT_HTTPHEADER | .addHeader() | .Headers.TryAddWithoutValidation | $headers=@{} | --header= |
| -d 'data' | İstek gövdesi | body: data | data: data | data=/json= | strings.NewReader | CURLOPT_POSTFIELDS | RequestBody.create | new StringContent | -Body | --body-data= |
| -u user:pass | Basic auth | Authorization başlığı | auth:{} | auth=(u,p) | req.SetBasicAuth | CURLOPT_USERPWD | Credentials.basic | new NetworkCredential | Otomatik Header'a dönüşür | --user/--password |
| -L | Yönlendirmeyi takip et | redirect:'follow' | maxRedirects: N | allow_redirects=True | Varsayılan CheckRedirect | CURLOPT_FOLLOWLOCATION | .followRedirects | AllowAutoRedirect=true | Varsayılan olarak takip eder | -L |
| -k | Sertifika doğrulamasını atla | Tarayıcı desteklemez | httpsAgent | verify=False | TLSClientConfig | CURLOPT_SSL_VERIFYPEER=false | Özel TrustManager gerekir | ServerCertificateCustomValidationCallback | -SkipCertificateCheck | --no-check-certificate |
| --compressed | Sıkıştırılmış yanıtı kabul et | Varsayılan olarak destekler | Otomatik açar | Otomatik açar | Manuel gzip gerekir | Otomatik açar | Varsayılan olarak destekler | AutomaticDecompression | -TransferEncoding | Varsayılan olarak açmaz |
| -A UA | User-Agent | User-Agent başlığı | headers | headers={} | req.Header.Set | CURLOPT_USERAGENT | .header() | Varsayılan | -UserAgent | --user-agent= |
| -b cookie | Cookie | Cookie başlığı | headers/withCredentials | cookies={} | req.Header.Set | CURLOPT_COOKIE | .header() | CookieContainer | -WebSession | --header= |
| -m SECS | Zaman aşımı | AbortController | timeout:N | timeout=N | http.Client.Timeout | CURLOPT_TIMEOUT | .callTimeout | client.Timeout | -TimeoutSec | --timeout= |
Content-Type yaygın değerleri ve curl kullanımı
| Content-Type | Kullanım amacı | curl örneği | Notlar |
|---|---|---|---|
| application/json | JSON veri gönderme | curl -H 'Content-Type: application/json' -d '{"a":1}' | En yaygın API türü, -d varsayılan olarak bu başlığı ayarlamaz, açıkça -H ile belirtilmesi gerekir |
| application/x-www-form-urlencoded | URL kodlu form | curl -d 'name=a&age=1' | -d'ye -H eklenmediğinde varsayılan olarak bu türdür |
| multipart/form-data | Dosya yükleme | curl -F 'file=@a.png' -F 'name=a' | -F otomatik olarak bu Content-Type ve boundary'yi ayarlar |
| text/plain | Düz metin | curl -H 'Content-Type: text/plain' -d 'hello' | Sade metin, API'de daha az kullanılır |
| application/octet-stream | İkili veri | curl --data-binary @file.bin | --data-binary ile ham ikili veri gönderin |
| application/xml | XML veri | curl -H 'Content-Type: application/xml' -d '<x/>' | SOAP/eski kurumsal API'ler kullanır |
Chrome DevTools Copy as cURL üç biçim karşılaştırması
| Biçim | Tırnak stili | Kaçış karakterleri | Kullanım senaryosu |
|---|---|---|---|
| Copy as cURL (bash) | Tek tırnak '...' | Tek tırnağı \' ile kaçır | Linux/macOS/WSL/Git Bash, bu araca yapıştırmak için önerilir |
| Copy as cURL (cmd) | Çift tırnak "..." | Özel karakterleri ^ ile kaçır | Windows cmd.exe komut istemi |
| Copy as cURL (PowerShell) | Çift tırnak/ters tırnak | ` ile kaçır | Windows PowerShell 5/7 |
| Copy as fetch | JS şablon string'i | Kaçış gerekmez | Doğrudan tarayıcı Console'da yürüt |
- Kimlik Doğrulama Başlığı Oluşturucu
- Cache-Control Çözümleyici
- Content-Disposition Çözümleyici
- CORS Başlık Oluşturucu
- CORS Denetleyici
- CSP Oluşturucu
- cURL'den Koda Dönüştürücü
- Global DNS Yayılma Kontrolü
- DNS Sorgulama
- Forwarded Başlık Çözümleyici
- Hreflang Etiket Oluşturucu
- HSTS Analizörü
- HTTP Çerez Ayrıştırıcı
- HTTP Başlık Denetleyici
- HTTP İstek Test Aracı
- HTTP Durum Kodları Sorgulama
- IP Sorgulama
- IPv4 Dönüştürücü
- IPv4 Aralık Genişletici
- IPv6 Araç Kutusu
- Link Başlık Ayrıştırıcı
- MX Sorgulama
- Port Denetleyici
- URL Parametre Oluşturucu
- Rate Limit Başlık Ayrıştırıcı
- Yönlendirme Denetleyici
- Robots.txt Oluşturucu
- Robots.txt Denetimi
- Güvenlik Başlığı Denetleyici
- Security.txt Oluşturucu
- Set-Cookie Ayrıştırıcı
- Site Ağ Denetimi
- Sitemap Generator
- Sitemap Denetleyici
- SSL Sertifika Denetleyicisi
- Alt Ağ Hesaplayıcı
- URL Çözümleyici
- User-Agent Ayrıştırıcı
- UTM Bağlantı Oluşturucu
- WebSocket Test Aracı
- What Is My IP?
- WHOIS Sorgulama