---
title: "cURL ile Proxy Nasıl Kullanılır?"
description: "cURL ile proxy kullanmak için komuta -x http://user:pass@host:port ekleyin. SOCKS5, ortam değişkenleri, .curlrc ve 407 gibi curl proxy hatalarını anlatıyoruz."
url: https://proxynet.io/tr/blog/curl-proxy
date: 2023-08-08
updated: 2026-09-25
author: "PXNET"
category: "Entegrasyon, Nasıl Yapılır"
lang: tr
---

# cURL ile Proxy Nasıl Kullanılır?

Sağlayıcınızdan bir proxy adresi aldınız ve onu bir scraper'a, zamanlanmış bir göreve ya da CI hattına koymadan önce çalışıp çalışmadığını görmek istiyorsunuz. En hızlı kontrol cURL ile yapılır: tek komut isteği proxy üzerinden gönderir ve hedef sitenin gördüğü IP adresini ekrana basar. Aynı komut daha sonra olduğu gibi bir shell betiğine taşınabilir.

Bu yazıda `-x` seçeneğini, kullanıcı adı ve parolayı, SOCKS5 kullanımını, proxy'yi her komut için kalıcı hâle getirmeyi, yeniden deneme yapan bir indirme betiğini ve hata mesajlarının birebir metnini anlatıyoruz. Tüm komutları curl 8.21 ile yerel bir test proxy'si üzerinde çalıştırdık; seçeneklerin resmî açıklaması [curl kılavuz sayfasında](https://curl.se/docs/manpage.html) yer alıyor.

> **Not: Kısa cevap**
>
> Komuta `-x` (uzun hâli `--proxy`) seçeneğini ve proxy adresini ekleyin: `curl -x "http://user:pass@pr.proxynet.io:8000" https://httpbin.org/ip`. Proxy türünü adresin başındaki şema belirler: HTTP proxy için `http://`, DNS çözümlemesini proxy'nin yaptığı SOCKS5 için `socks5h://`. `-x` yalnız o komut için geçerlidir; proxy'nin her komutta kullanılmasını istiyorsanız `https_proxy` ortam değişkenini tanımlayın ya da `.curlrc` dosyasına `proxy = "…"` satırını ekleyin.

## cURL nedir?

cURL (curl olarak okunur) sunuculara ve sunuculardan veri aktarımını kolaylaştıran bir komut satırı aracıdır. URL'lerle çalışır: sayfa ve dosya indirir, form ve API isteği gönderir, yanıtı ekrana basar ya da dosyaya kaydeder. Aktarımı asıl yapan **libcurl** adlı kütüphanedir; PHP ve başka birçok dil de aynı kütüphaneyi kullanır.

Her program komutu gibi cURL de belirli bir sözdizimine uyar:

```bash
curl [seçenekler] [URL]
```

Sözdiziminin "seçenekler" kısmı komutun ne yapacağını belirler ve cURL'ün 250'den fazla seçeneği vardır. `-o sayfa.html` yanıtı bir dosyaya kaydeder, `-I` yalnız başlıkları getirir, `-L` yönlendirmeleri izler, `-x` ise proxy kullanır. Seçenekler büyük/küçük harfe duyarlıdır: `-x` proxy ayarlar, `-X` HTTP yöntemini belirler.

cURL macOS'ta, Windows 10 ve 11'de `curl.exe` adıyla ve çoğu Linux dağıtımında kurulu gelir. Küçük container imajlarında ayrıca kurmanız gerekebilir (Debian ve Ubuntu'da `apt install curl`). `curl --version` komutunu çalıştırın: `Features:` satırında `HTTPS-proxy` görünüyorsa kurulumunuz proxy'ye TLS üzerinden de bağlanabilir.

## cURL hangi protokolleri destekler?

cURL yalnız URL ile yazılabilen protokollerle çalışır; URL'si olmayan ağ protokollerini desteklemez. Güncel sürümün listesi şöyle: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS ve WSS. Kendi kurulumunuzun neleri desteklediğini `curl --version` gösterir. Eski listelerde geçen RTMP artık yok.

URL'de şema yazmazsanız cURL protokolü host adından tahmin eder: `ftp.example.com` FTP olarak, adların çoğu HTTP olarak yorumlanır. Proxy açısından önemli olan şudur: HTTP proxy, HTTP ve HTTPS trafiğini taşır. Diğer protokoller ancak bir CONNECT tüneliyle (`-p`) ve proxy o porta izin veriyorsa geçer. SOCKS5 ise her TCP bağlantısını taşır; bu yüzden FTP ya da SMTP'yi proxy üzerinden kullanmak genellikle SOCKS5 demektir.

## Neden cURL ile proxy kullanılır?

- **Her adım görünür.** `-v` proxy'ye bağlantıyı, CONNECT isteğini ve iki tarafın cevabını ekrana basar. Neyin gönderildiğini ve neyin geldiğini gördüğünüz için isteğin hangi adımda takıldığını hemen anlarsınız.
- **Tüm proxy türleri tek seçenekte.** HTTP, HTTPS, SOCKS4, SOCKS4a, SOCKS5 ve SOCKS5h proxy'lerin hepsi `-x` ile verilir.
- **Betik yazmaya uygun.** Çıkış kodları, `--retry`, zaman aşımları ve `--write-out` sayesinde bir shell betiği hataları kendisi yönetebilir. PHP'nin `curl_*` fonksiyonları da aynı seçenekleri kullanır.
- **Tek komutta birden çok URL.** `sayfa[1-20].html` ya da `{a,b,c}` gibi parantezli URL kalıpları birden çok isteğe dönüşür ve bu isteklerin hepsi aynı proxy'den geçer.

Tipik işler: bir [veri kazıma](/tr/data-scraping) çalışmasından önce çıkış IP'sinin ülkesini kontrol etmek, [fiyat takibi](/tr/price-monitoring) hedeflerini başka bir pazardan denemek ve zamanlanmış görevlerde dosya indirmek. Bu komutların Node.js karşılıkları [JavaScript'te cURL](/tr/blog/curl-in-javascript) yazısında, PHP karşılıkları [PHP ile Siteden Veri Çekme](/tr/blog/php-web-scraping) yazısında.

## cURL isteği proxy üzerinden nasıl gönderir?

1. **cURL hedef siteye değil, proxy'ye bağlanır.**
2. **HTTP hedef, HTTP proxy:** cURL isteği tam URL ile gönderir (`GET http://example.com/ HTTP/1.1`). Proxy isteğin içeriğini okuyabilir.
3. **HTTPS hedef, HTTP proxy:** cURL `CONNECT example.com:443` gönderir; kimlik bilgisi verdiyseniz yanına `Proxy-Authorization` başlığını ekler. Proxy `200` ile cevap verdikten sonra hedefle TLS bağlantısı bu tünelin içinde kurulur, proxy yalnız host ve portu görür. [CONNECT yöntemi](https://www.rfc-editor.org/rfc/rfc9110.html#section-9.3.6) RFC 9110'da tanımlıdır.
4. **SOCKS5 proxy:** cURL oturum açar (kullanıcı adı ve parola verildiyse onlarla) ve proxy'den hedefe bağlanmasını ister ([RFC 1928](https://www.rfc-editor.org/rfc/rfc1928.html)). `socks5://` ile kendi çözdüğü IP adresini, `socks5h://` ile host adını gönderir.
5. **Hedef site proxy'nin IP'sine cevap verir.** Sizin IP'niz hedefe ulaşmaz. Ancak cURL adları yerelde çözüyorsa DNS sorgularınız kendi DNS sunucunuzdan çıkar ve hedefin ad sunucusuna kadar gidebilir.

## cURL'de proxy nasıl ayarlanır: -x seçeneği

Terminali açın ve `curl --help proxy` yazıp Enter tuşuna basın. Çıktı proxy ile ilgili tüm seçenekleri listeler; asıl olanı şöyle görünür:

```text
 -x, --proxy <[protocol://]host[:port]>  Use this proxy
```

x'in küçük olduğuna dikkat edin. Proxy ayrıntıları `-x` ya da `--proxy` ile verilir, ikisi aynı seçenektir:

```bash
curl -x "http://user:pass@pr.proxynet.io:8000" https://httpbin.org/ip
```

httpbin.org/ip proxy testleri için kullanışlıdır, çünkü isteğin geldiği IP adresini döndürür. Proxy doğru çalışıyorsa sayfa sizin makinenizin adresini değil, proxy'nin çıkış IP'sini gösterir.

- **Şema yazılmazsa HTTP kabul edilir.** `-x "user:pass@pr.proxynet.io:8000"` yazmakla adresin başına `http://` eklemek aynı sonucu verir.
- **Portu her zaman yazın.** Yazmazsanız cURL varsayılan bir port seçer: curl 8.21 testimizde `http://` için 80, `https://` için 443, SOCKS için 1080 denendi (kılavuz hâlâ 1080 diyor). Bunların sağlayıcınızın portu olma ihtimali düşüktür; bağlantı hata verir ya da zaman aşımına uğrar.
- **Adresi tırnak içine alın.** Böylece shell `&`, `?` ya da `!` karakterlerini yorumlamaya kalkmaz ve URL'deki özel karakterler bozulmaz.
- **`-x` yalnız o komut için geçerlidir** ve proxy ortam değişkenlerini geçersiz kılar. Sonraki komut yine doğrudan çıkar.

Proxynet'in residential ve mobil ürünlerinde tek bir gateway, HTTP ve SOCKS5'e ayrı portlardan hizmet verir. Kullanıcı adını panelin Endpoint Oluşturucu'su seçtiğiniz ülke, şehir ve oturuma göre hazırlar.

## HTTP veya HTTPS proxy ile cURL nasıl kullanılır?

HTTP proxy iki tür hedefi de taşır:

```bash
# HTTPS hedef: CONNECT tüneli, sayfa şifreli kalır
curl -x "http://user:pass@pr.proxynet.io:8000" https://httpbin.org/ip

# HTTP hedef: proxy düz isteği iletir
curl -x "http://user:pass@pr.proxynet.io:8000" http://httpbin.org/ip
```

**HTTPS proxy** (`https://`) proxy'nin kendisiyle olan bağlantıyı da şifreler. Bunu yalnız port TLS konuşuyorsa kullanın; düz HTTP portuna `https://` ile bağlanmaya çalışırsanız el sıkışma aşamasında hata alırsınız (Windows'ta `SEC_E_INVALID_TOKEN`, OpenSSL'de genellikle `wrong version number`).

Sertifika seçenekleri iki bağlantı için ayrıdır:

- `-k` (`--insecure`) yalnız **hedef sitenin** sertifika doğrulamasını kapatır. `http://` hedefte hiçbir etkisi yoktur.
- `--proxy-insecure` **HTTPS proxy'nin** sertifika doğrulamasını kapatır. `--proxy-cacert dosya.pem` daha güvenlidir: doğrulamayı kapatmadan şirket proxy'sinin CA sertifikasına güvenmenizi sağlar.

`-k`'yi yalnız hızlı testlerde kullanın, token gönderen betiklere koymayın. HTTP dışındaki protokolleri HTTP proxy üzerinden geçirmek için `-p` (`--proxytunnel`) ekleyin. Şifreli trafiğin proxy'den nasıl geçtiğini [HTTPS Proxy](https://proxynet.io/tr/https-proxy) sayfasında bulabilirsiniz.

## Proxy kullanıcı adı ve parolası nasıl verilir?

İki yazım da aynı `Proxy-Authorization` başlığını gönderir:

```bash
curl -x "http://user:pass@pr.proxynet.io:8000" https://httpbin.org/ip
curl -x "http://pr.proxynet.io:8000" -U "user:pass" https://httpbin.org/ip
```

Kimlik bilgisini adresin içine yazıyorsanız paroladaki özel karakterleri yüzde kodlamasıyla yazmanız gerekir: `@` yerine `%40`, `:` yerine `%3A`, `#` yerine `%23`. cURL bunları göndermeden önce çözer; testimizde `p%40ss` proxy'ye `p@ss` olarak ulaştı. `-U` (`--proxy-user`) ile kodlama gerekmez. Varsayılan yöntem Basic kimlik doğrulamadır; şirket proxy'leri `--proxy-ntlm`, `--proxy-digest` ya da `--proxy-anyauth` isteyebilir.

Komut satırına yazılan parolalar shell geçmişine kaydedilir. Betiklerde parolayı yalnız sizin okuyabildiğiniz bir yapılandırma dosyasından okuyun (`-K dosya`) ya da onun yerine IP whitelist (izinli IP listesi) kullanın; Proxynet en fazla 10 IP kabul eder. [Proxy Kimlik Doğrulama: User:Pass ve IP Whitelist](/tr/blog/proxy-authentication-methods) yazısı iki yöntemi karşılaştırıyor ve 407 hatasını açıklıyor.

## SOCKS5 proxy ile cURL nasıl kullanılır?

SOCKS sürümünü şema olarak yazın:

```bash
curl -x "socks5h://user:pass@pr.proxynet.io:1080" https://httpbin.org/ip
```

| Şema | Host adını kim çözer | Kullanıcı adı ve parola | Ne için |
|---|---|---|---|
| `http://` | Proxy | Evet | Scraping, API'ler, çoğu araç |
| `https://` | Proxy | Evet | TLS konuşan proxy portu |
| `socks5h://` | Proxy | Evet | Konuma uygun DNS ile SOCKS5 |
| `socks5://` | Sizin makineniz | Evet | Yalnız sizin DNS'inizin çözebildiği hedefler |
| `socks4a://` | Proxy | Yalnız kullanıcı kimliği | Eski SOCKS4 sunucuları |
| `socks4://` | Sizin makineniz | Yalnız kullanıcı kimliği | Eski SOCKS4 sunucuları |

`socks5://` kullandığınızda DNS sunucunuz ziyaret ettiğiniz her host'u görür ve konuma göre içerik sunan siteler sizin bulunduğunuz yere göre cevap verir. `socks5h://` ikisini de önler; bunun neden önemli olduğunu [WebRTC ve DNS Sızıntısı](/tr/blog/webrtc-dns-leak) yazısında anlatıyoruz. Eski `--socks5-hostname host:port` seçeneği `socks5h://` ile aynıdır; kimlik bilgisi `-U` ile verilir. `--socks5` ise yerel DNS kullanır, yani `socks5://` karşılığıdır.

Protokol farkları için [SOCKS ve HTTP Proxy Farkı](/tr/blog/socks-vs-http-proxy) ve [SOCKS5 Proxyler Nedir?](/tr/blog/socks5-proxy-101) yazılarına bakabilirsiniz. Proxynet [SOCKS5 Proxy](https://proxynet.io/tr/socks5-proxy) hizmeti HTTP portunun yanında kendi portunda çalışır.

## Proxy her cURL komutunda nasıl kullanılır?

| Yöntem | Kapsam | Örnek |
|---|---|---|
| `-x` | Tek komut | `curl -x "http://user:pass@host:port" URL` |
| Ortam değişkeni | Shell oturumu | `export https_proxy="http://user:pass@host:port"` |
| `.curlrc` | O kullanıcının her çalıştırması | `proxy = "http://host:port"` |

**Ortam değişkenleri.** cURL HTTP hedefler için `http_proxy`, HTTPS hedefler için `https_proxy` ya da `HTTPS_PROXY`, geri kalanlar için yedek olarak `ALL_PROXY` değişkenini okur. `http_proxy` yalnız küçük harfle çalışır (CGI programlarını korumak için), bu yüzden Linux ve macOS'ta `HTTP_PROXY` yok sayılır. PowerShell'de: `$env:HTTPS_PROXY = "http://user:pass@host:port"`. wget, pip ve git aynı değişkenleri okur; ayrıntılar [wget ile Proxy Kullanımı](/tr/blog/wget-proxy) yazısında ve [everything curl'ün proxy değişkenleri sayfasında](https://everything.curl.dev/usingcurl/proxies/env.html).

**Yapılandırma dosyası.** cURL her çalıştırmadan önce `~/.curlrc` dosyasını okur (Windows'ta `%USERPROFILE%\.curlrc` ya da `_curlrc`):

```text
proxy = "http://pr.proxynet.io:8000"
proxy-user = "user:pass"
```

Dosyayı tek bir çalıştırmada atlamak için `curl -q URL` yazın; `-q` ilk seçenek olmalıdır.

**İstisnalar.** `--noproxy "localhost,.internal.example"` ya da `NO_PROXY` değişkeni bu host'lara doğrudan bağlanır. Bir ad alt alan adlarını da kapsar, `192.168.0.0/16` gibi CIDR aralıkları çalışır ve tek joker karakter yalnız başına yazılmış `*`'tır. `NO_PROXY`, `-x` kullanıldığında da geçerlidir.

cURL'ün JavaScript motoru olmadığı için PAC dosyalarını çalıştıramaz. Ağınız PAC dosyası kullanıyorsa dosyayı okuyun ([PAC Dosyası Nedir ve Nasıl Yazılır?](/tr/blog/pac-file)) ve döndürdüğü proxy'yi `-x` ile verin.

## cURL'ün proxy kullandığı nasıl kontrol edilir?

`curl https://api.ipify.org` komutunu önce `-x` olmadan, sonra `-x` ile çalıştırın: ikinci komut farklı bir adres döndürüyorsa ve bu adres beklediğiniz ülkedeyse proxy çalışıyordur. HTTP proxy üzerinden sorunsuz giden bir HTTPS isteğinde `-v` çıktısında şu satırlar görünür:

```text
* Establishing HTTP proxy tunnel to httpbin.org:443
> CONNECT httpbin.org:443 HTTP/1.1
> Proxy-Authorization: Basic dXNlcjpwYXNz
< HTTP/1.1 200 Connection Established
* CONNECT tunnel established, response 200
```

`Proxy-Authorization` değeri yalnız Base64 ile kodlanmıştır, şifreli değildir; çıktıyı paylaşmadan önce silin. Betiklerde `-w` sonucu tek satırda verir:

```bash
curl -s -o /dev/null -x "http://user:pass@pr.proxynet.io:8000" \
  -w "%{http_code} connect=%{http_connect} proxy_used=%{proxy_used}\n" https://httpbin.org/ip
```

`http_connect` proxy'nin CONNECT isteğine verdiği cevaptır; `proxy_used` (curl 8.7 ve sonrası) proxy kullanıldıysa `1` olur. Konum, hız ve sızıntı kontrolleri için [Proxy Nasıl Test Edilir?](/tr/blog/how-to-test-a-proxy) yazısına bakın.

## Örnek: URL listesini proxy üzerinden yeniden denemeyle indirmek

Bu betik `urls.txt` dosyasındaki URL'leri proxy üzerinden aynı anda dörder dörder indirir, geçici hataları yeniden dener ve her isteğin durum kodunu ve süresini yazar. cURL ve bir POSIX shell (Linux, macOS ya da Git Bash) yeterlidir:

```bash
#!/usr/bin/env bash
# fetch.sh: urls.txt içindeki her URL'yi proxy üzerinden, aynı anda 4 tane indirir
set -u
PROXY="${PROXY:-http://user:pass@pr.proxynet.io:8000}"

sed 's/^/url = /' urls.txt | curl \
  --parallel --parallel-max 4 \
  --proxy "$PROXY" \
  --connect-timeout 10 --max-time 30 \
  --retry 3 --retry-connrefused \
  --fail --silent --show-error \
  --create-dirs --output-dir pages --remote-name-all \
  --write-out "%{http_code} %{time_total}s %{url}\n" \
  --config -
```

- `--config -`, `sed`'in ürettiği `url = …` satırlarını okur ve **en sonda** durmalıdır, çünkü `--remote-name-all` yalnız kendisinden sonra eklenen URL'lere uygulanır.
- `--retry 3` zaman aşımlarını ve HTTP 408, 429, 500, 502, 503, 504, 522 ve 524 cevaplarını yeniden dener; araya 1, 2 ve 4 saniye koyar ve `Retry-After` başlığına uyar.
- `--max-time` takılan bir aktarımı durdurur; `--fail` HTTP hatalarını 22 numaralı çıkış koduna çevirir.
- Tüm URL'ler aynı sitedeyse `--parallel-max` değerini düşük tutun; çok fazla paralel istek 429 cevaplarına yol açabilir.

Testimizde dört sayfa kaydedildi, 503 dönen URL üç kez yeniden denendi ve betik 22 koduyla çıktı.

Gateway'inizin IP değiştirip değiştirmediğini görmek için api.ipify.org'a aynı isteği birkaç kez gönderin: rotating gateway her seferinde yeni bir IP döndürür, sticky oturum ise Proxynet'te 1-60 dakika boyunca aynı IP'yi korur. Hangisinin ne zaman kullanılacağını [IP Rotasyonu Nedir ve Nasıl Çalışır?](/tr/blog/ip-rotation-explained) yazısı anlatıyor; [Residential Proxy](https://proxynet.io/tr/residential-proxy) ikisini de destekler.

## Sık görülen cURL proxy hataları ve çözümleri

Mesajlar, testlerimizde curl 8.21'in yazdığı hâliyle:

- **`curl: (5) Could not resolve proxy: …`** Proxy host adı yanlış: yazımını ve fazladan tırnak olup olmadığını kontrol edin.
- **`curl: (7) Failed to connect to … over proxy …`** O portta cevap veren yok (ya da port yazılmadığı için cURL varsayılan bir porta gitti) veya bir güvenlik duvarı bağlantıyı engelliyor.
- **`curl: (7) CONNECT tunnel failed, response 407`** Kullanıcı adı ya da parola yanlış, özel karakterler kodlanmamış ya da IP adresiniz whitelist'te yok. Eski sürümler `curl: (56) Received HTTP code 407 from proxy after CONNECT` yazar; `http://` hedeflerde ise doğrudan 407 durum kodunu alırsınız. Bkz. [Scraping'de HTTP Hata Kodları](/tr/blog/http-status-codes-web-scraping).
- **`curl: (56) Proxy CONNECT aborted`** Proxy bağlantıyı kapattı; testimizde `http://` adres bir SOCKS5 portuna yönelmişti.
- **`curl: (97) Received invalid version in initial SOCKS5 response.`** `socks5://` adres bir HTTP portunu gösteriyor. `User was rejected by the SOCKS5 server` mesajı SOCKS kimlik bilgilerinin yanlış olduğunu söyler.
- **`curl: (28) Connection timed out after … milliseconds`** Süre içinde cevap gelmedi; bkz. [Proxy Sunucusu Yanıt Vermiyor](/tr/blog/proxy-server-not-responding).
- **`curl: (35) …` ya da `SSL_ERROR_SYSCALL`** TLS el sıkışması başarısız oldu: düz bir proxy portuna `https://` ile bağlanılmış ya da aradaki bir cihaz TLS bağlantılarını kesiyor.
- **`curl: (60) SSL certificate problem: unable to get local issuer certificate`** Çoğunlukla TLS trafiğini inceleyen bir şirket proxy'si vardır. `-k` kullanmak yerine o proxy'nin CA sertifikasını kurun.
- **Proxy yok sayılıyor.** `NO_PROXY`, büyük harfli `HTTP_PROXY` ya da başka bir `.curlrc` olup olmadığına bakın; `-v` cURL'ün önce hangi adrese bağlanmaya çalıştığını gösterir. Aynı hataların Python'daki karşılığı [Max Retries Exceeded With URL](/tr/blog/max-retries-exceeded-with-url) yazısında.

## Karar rehberi

| İhtiyaç | Öneri |
|---|---|
| Yeni bir proxy'yi bir kez test etmek | `curl -x "http://user:pass@host:port" https://httpbin.org/ip` |
| Parolada `@`, `:` ya da `#` var | `-U "user:pass"` ya da yüzde kodlaması |
| DNS'in proxy tarafında çözülmesi | `socks5://` değil, `socks5h://` |
| FTP, SMTP ya da HTTP dışı başka bir protokol | SOCKS5 ya da HTTP proxy ile `-p` |
| Bir shell oturumu boyunca proxy | `export https_proxy=…` ve küçük harfli `http_proxy` |
| Her çalıştırmada proxy | `~/.curlrc` içinde `proxy = "…"` |
| Betiklerde parola olmasın | Panelde IP whitelist |
| Giriş akışı için aynı IP | Endpoint Oluşturucu'dan sticky oturum |

## Sıkça sorulan sorular

### cURL, Windows ya da macOS'taki sistem proxy ayarlarını kullanır mı?

Hayır. cURL proxy'yi yalnız `-x` seçeneğinden, ortam değişkenlerinden ve `.curlrc` dosyasından alır. Windows'ta Ayarlar'dan ya da macOS'ta Sistem Ayarları'ndan tanımlanan proxy cURL'ü etkilemez.

### cURL'ün tek bir istekte proxy'yi atlaması nasıl sağlanır?

Komuta `--noproxy "*"` ya da `-x ""` ekleyin. `https_proxy` ya da `.curlrc` proxy tanımlasa bile ikisi de o komutu doğrudan gönderir.

### cURL proxy komutum PowerShell'de neden çalışmıyor?

Windows PowerShell 5.1'de `curl`, `-x` seçeneğini tanımayan `Invoke-WebRequest` komutunun takma adıdır. Gerçek cURL'ü çalıştırmak için `curl.exe` yazın. PowerShell 7'de bu takma ad artık yok.

### cURL'de socks5 ile socks5h arasındaki fark nedir?

`socks5://` ile host adını sizin makineniz çözer; `socks5h://` ile proxy çözer, böylece DNS sorgusu da proxy'nin konumundan yapılır.

### PHP'de cURL ile proxy kullanılabilir mi?

Evet. PHP'nin cURL fonksiyonları libcurl'ü kullanır: `CURLOPT_PROXY` adresi, `CURLOPT_PROXYUSERPWD` kimlik bilgilerini, `CURLOPT_PROXYTYPE` SOCKS türünü belirler. Örnekler [PHP ile Siteden Veri Çekme](/tr/blog/php-web-scraping) yazısında.

### cURL her istekte proxy'yi değiştirebilir mi?

cURL her komutta tek bir proxy kullanır. Rotating gateway her bağlantıya yeni bir çıkış IP'si atadığı için komutları döngüyle çalıştırdığınızda her seferinde farklı bir IP alırsınız. Tek komuttaki birden çok URL ise genellikle aynı bağlantıyı kullanır ve aynı IP'yi paylaşır.

## Özet

cURL ile proxy kullanmak için komuta `-x` seçeneğini ve tam adresi ekleyin: şema, kimlik bilgileri, host ve port. İşlerin çoğunda `http://`, uzak DNS'li SOCKS5 için `socks5h://` kullanın; proxy her komutta gerekiyorsa onu `https_proxy` değişkenine ya da `.curlrc` dosyasına yazın, `-k`'yi testlerle sınırlı tutun. Bir komut hata verdiğinde çıkış kodu ve `-v` çıktısı sorunun adreste mi, kimlik bilgilerinde mi yoksa hedef sitede mi olduğunu gösterir. Bu komutlarla çalışan residential, mobil ve SOCKS5 uç noktaları için [Proxynet proxy'lerine](/tr/proxy) göz atabilirsiniz.
