cURL Komutunu Koda Çevirici
Tarayıcıdan ya da API belgesinden kopyaladığınız curl komutunu PHP, Python (requests) veya JavaScript (fetch) koduna çevirin
Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.
Bu araç işinizi gördü mü?
Teşekkürler, geri bildiriminiz alındı.
Nasıl çalışır?
API belgelerindeki örnekler ve tarayıcının "Copy as cURL" komutu hep curl biçimindedir; bu araç o komutu kendi programınıza yapıştırabileceğiniz koda çevirir. Örneğin curl -X POST https://api.example.com/v1/orders komutuna -H "Content-Type: application/json" başlığı ve -d '{"urun": "defter", "adet": 2}' gövdesi eklenmişse Python seçeneğinde url, headers ve data değişkenleri ile requests.post(url, headers=headers, data=data) satırı yazılır; PHP'de aynı istek curl_setopt_array içinde CURLOPT_HTTPHEADER ve CURLOPT_POSTFIELDS olur. Satır sonundaki ters bölü (\) işaretleri, tek ve çift tırnaklar, $'…' yazımı ve Windows'taki ^ kaçışları komutun kendisinden çözülür; komutu düzeltmeniz gerekmez. -u kullanıcı:şifre kimliğe, -F alanları form verisine, -G sorgu dizesine, -k sertifika denetimini kapatmaya, -m zaman aşımına çevrilir. Sonucu etkilemeyen -s, -v, -o gibi seçenekler atlanır ve not satırında listelenir. Komut tarayıcınızın içinde çevrilir; içindeki şifre, çerez ve erişim anahtarı hiçbir sunucuya gönderilmez.
Bu araç curl to php, curl to python, copy as curl aramalarıyla da biliniyor.
cURL nedir?
cURL, komut satırından web adreslerine istek gönderen ücretsiz bir programdır; adı "client URL" kısaltmasından gelir. Windows 10, macOS ve Linux'ta hazır gelir. API belgeleri örnek istekleri curl komutu olarak verir, çünkü komut hangi adrese, hangi yöntemle, hangi başlık ve veriyle gidildiğini tek satırda gösterir. PHP'nin cURL eklentisi de aynı libcurl kütüphanesini kullanır.
HTTP başlığı (header) nedir?
HTTP başlığı, isteğin içeriğinden ayrı gönderilen ad-değer satırıdır: Content-Type gövdenin türünü, Authorization kimliği, Accept beklenen yanıt türünü söyler. curl komutunda her başlık -H "Ad: değer" biçiminde yazılır. Kodda PHP'de dizi, Python'da sözlük, fetch'te headers nesnesi olur; adı ve değeri aynen taşınır.
curl'ün yazmadan yaptığı üç şey: kodda neden fazladan satır görüyorsunuz?
curl, komutta yazmayan bazı işleri kendiliğinden yapar. -d ile veri verdiğinizde yöntemi POST yapar ve başlık yoksa Content-Type: application/x-www-form-urlencoded ekler. Python requests ve fetch bunu yapmaz: requests metin gövdeyi türsüz gönderir, fetch text/plain yazar. Sunucu bu yüzden aynı isteği farklı okuyabilir. Araç bu başlığı koda açıkça ekler; satırı görüp şaşırmamanız için not satırında da başlık sayısı yazılır.
İkinci fark yönlendirmedir. curl, -L yazmadıkça 301/302 yanıtını izlemez; requests ve fetch varsayılan olarak izler. Tarayıcıdan kopyaladığınız komutta -L olmasa da tarayıcı yönlendirmeyi izlemişti, bu yüzden Python ve JavaScript çıktısına ayrıca bir ayar konmaz; PHP çıktısına CURLOPT_FOLLOWLOCATION yalnız -L varsa yazılır. Üçüncüsü dosyadan veridir: -d @veri.txt dosyadaki satır sonlarını siler, --data-binary @veri.txt silmez. Araç bu ayrımı da koda taşır.
Tarayıcıda çalışan fetch'in ayrıca bir sınırı vardır: Cookie, Referer ve User-Agent gibi başlıkları tarayıcı kendisi yönetir, koddan verilen değeri göndermez. Aynı kod Node.js 18 ve üstünde bu başlıkları gönderir. Komutunuzda böyle bir başlık varsa not satırı sizi uyarır.
Hangi dili seçmelisiniz, komutu nereden kopyalamalısınız?
Projeniz hangi dildeyse onu seçin; üç çıktı da aynı isteği gönderir. Python requests kütüphanesi pip install requests ile kurulur; PHP çıktısı PHP'nin kendi cURL eklentisini kullanır, çoğu hostingde açıktır; fetch ise tarayıcıda ve Node.js 18 sürümünden itibaren kurulum gerektirmez.
Bir web sitesinin yaptığı isteği tekrarlamak istiyorsanız Chrome, Edge ya da Firefox'ta F12 ile Geliştirici Araçları'nı açın, Ağ (Network) sekmesinde isteğe sağ tıklayın ve "Copy as cURL" seçin. Windows'ta iki seçenek çıkar: "(bash)" ve "(cmd)"; bu araç ikisini de okur. Kopyaladığınız komut oturum çerezinizi ve erişim anahtarınızı içerir; kodu başkasıyla paylaşmadan önce bu değerleri silin.
- Sunucu tarafı PHP sitesi, WordPress eklentisi → PHP (cURL)
- Betik, veri çekme, otomasyon → Python (requests)
- Web sayfası ya da Node.js uygulaması → JavaScript (fetch)
Sık sorulanlar
curl komutunu Python koduna nasıl çeviririm?
Komutu kutuya yapıştırın ve dil olarak Python'u seçin. Başlıklar headers sözlüğüne, gövde data değişkenine, -u kimliği auth parametresine yazılır ve istek requests.post ya da requests.get ile gönderilir. Kodu çalıştırmadan önce pip install requests ile kütüphaneyi kurun.
curl komutunu PHP'ye nasıl çeviririm?
Dil olarak PHP'yi seçin. Çıktı curl_init ve curl_setopt_array kullanır: adres CURLOPT_URL, başlıklar CURLOPT_HTTPHEADER, gövde CURLOPT_POSTFIELDS olur. -F ile gönderilen dosyalar new CURLFile(…) satırına çevrilir.
Tarayıcıdan "Copy as cURL (cmd)" ile aldığım komut çalışır mı?
Evet. Windows'un cmd biçimindeki ^" kaçışları ve satır sonundaki ^ işaretleri çözülür, komut bash biçimindeki gibi okunur. PowerShell için verilen "Copy as PowerShell" komutu curl değildir, bu araç onu okumaz.
Komuttaki şifre ve çerezler bir yere gönderiliyor mu?
Hayır. Çeviri tamamen tarayıcınızın içinde yapılır; komut, içindeki şifre, çerez ve erişim anahtarı hiçbir sunucuya gitmez. Yine de çıkan kodu paylaşacaksanız bu değerleri kendiniz silin.
Tanınmayan seçenek uyarısı ne demek?
Araç curl'ün istek üzerinde etkisi olan seçeneklerini koda çevirir. Bilmediği bir seçenek görürse onu atlar ve not satırında adıyla yazar; o seçeneğin kodda karşılığını kendiniz eklemeniz gerekir. -s, -v, -o gibi yalnız ekran çıktısını değiştiren seçenekler de atlanır.