İçeriğe geç
Guides 6 dk okuma 1057 görüntülenme

PHP Proxy Kurulumu

Bu rehber cURL, Guzzle ve file_get_contents ile PHP proxy kurulumunu anlatır. Proxy'leri web projelerinize verimli şekilde entegre edin.

PHP Proxy Kurulumu

cURL, Guzzle ve file_get_contents için PHP proxy kurulumu, giden istekleri belirtilen bir proxy sunucusu üzerinden yönlendirmek amacıyla HTTP istemci seçeneklerini veya stream context'lerini yapılandırmak anlamına gelir; bunun için genellikle proxy'nin host adresi, portu ve kimlik doğrulama bilgileri tanımlanır.

PHP ile proxy sunucusu kullanmak, uygulamanın kaynak IP adresini gizlemesini, coğrafi kısıtlamaları aşmasını, iç ağlardaki kaynaklara erişmesini veya web scraping ve API entegrasyonlarında istek hızını yönetmesini sağlar. Yöntem seçimi; ihtiyaç duyulan kontrol düzeyine, isteklerin karmaşıklığına ve hata yönetimi gereksinimlerine bağlıdır.

cURL kullanımı

cURL, HTTP istekleri yapmak için güçlü bir kütüphanedir ve proxy ayarları dahil olmak üzere bağlantı parametreleri üzerinde geniş kontrol sunar. Karmaşık web etkileşimleri için yaygın bir tercihtir ve genellikle bir PHP eklentisi (php-curl) olarak bulunur.

Temel proxy kurulumu

Bir isteği HTTP veya HTTPS proxy üzerinden yönlendirmek için CURLOPT_PROXY ve CURLOPT_PROXYPORT seçeneklerini kullanın.

<?php
$ch = curl_init();

// Hedef URL
curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/data');

// Proxy ayarları
curl_setopt($ch, CURLOPT_PROXY, 'proxy.example.com');
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);

// Aktarımı doğrudan yazdırmak yerine string olarak döndür
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'cURL error: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
?>

SOCKS proxy

cURL, SOCKS proxy'leri (SOCKS4, SOCKS4a, SOCKS5, SOCKS5h) destekler. Proxy türünü CURLOPT_PROXYTYPE ile belirtin.

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// SOCKS5 proxy ayarları
curl_setopt($ch, CURLOPT_PROXY, 'socks5.example.com');
curl_setopt($ch, CURLOPT_PROXYPORT, 1080);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); // Veya CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A, CURLPROXY_SOCKS5_HOSTNAME

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'cURL error: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
?>

Kimlik doğrulamalı proxy

Kimlik doğrulama gerektiren proxy'ler için CURLOPT_PROXYUSERPWD seçeneğini username:password biçiminde bir string ile kullanın.

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Kimlik doğrulamalı proxy ayarları
curl_setopt($ch, CURLOPT_PROXY, 'authproxy.example.com');
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'proxyuser:proxypassword');

// İsteğe bağlı: proxy kimlik doğrulama yöntemini belirtin (ör. CURLAUTH_BASIC, CURLAUTH_DIGEST)
// curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'cURL error: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
?>

HTTPS proxy (CONNECT tünelleme)

Bir HTTP proxy üzerinden HTTPS hedefine bağlanırken cURL, tünel açmak için HTTP CONNECT yöntemini kullanır. CURLOPT_HTTPPROXYTUNNEL bunu açıkça etkinleştirebilir, ancak çoğu zaman otomatik olarak yönetilir.

<?php
$ch = curl_init();

// Hedef HTTPS URL
curl_setopt($ch, CURLOPT_URL, 'https://secure.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Proxy ayarları
curl_setopt($ch, CURLOPT_PROXY, 'proxy.example.com');
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);

// HTTP proxy üzerinden HTTPS için tünellemeyi etkinleştir (çoğunlukla örtük)
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

// SSL sertifika doğrulaması (test için kapatın, üretimde açın)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'cURL error: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
?>

Proxy'ler için yaygın cURL seçenekleri

  • CURLOPT_TIMEOUT: cURL işlemi için saniye cinsinden maksimum süre.
  • CURLOPT_CONNECTTIMEOUT: bağlantı kurmak için saniye cinsinden maksimum süre.
  • CURLOPT_FOLLOWLOCATION: Location: HTTP başlıklarını takip eder.
  • CURLOPT_MAXREDIRS: takip edilecek maksimum yönlendirme sayısı.
  • CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST: SSL sertifika doğrulamasını denetler. Üretimde true yapın.
  • CURLOPT_HEADER: başlığı çıktıya dahil eder.

Guzzle kullanımı

Guzzle, cURL üzerinde daha üst seviye bir soyutlama sunan ve yaygın HTTP işlerini basitleştiren popüler bir PHP HTTP istemcisidir. Composer ile kurulması gerekir.

Temel proxy kurulumu

Guzzle istemcileri ve istekleri proxy seçeneğini kabul eder. Bu seçenek istemci için global olarak ya da istek bazında tanımlanabilir.

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    // Bu istemciyle yapılan tüm istekler için temel URI
    'base_uri' => 'http://example.com/',
    // İstemci için global proxy ayarı
    'proxy' => 'http://proxy.example.com:8080',
]);

try {
    $response = $client->request('GET', 'api/data');
    echo $response->getBody();
} catch (GuzzleHttp\Exception\RequestException $e) {
    echo 'Guzzle error: ' . $e->getMessage();
}
?>

Kimlik doğrulamalı proxy

HTTP/HTTPS proxy'ler için kimlik bilgilerini doğrudan proxy URI'sine ekleyin.

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'http://example.com/',
    // Kimlik doğrulamalı proxy
    'proxy' => 'http://proxyuser:[email protected]:8080',
]);

try {
    $response = $client->request('GET', 'api/data');
    echo $response->getBody();
} catch (GuzzleHttp\Exception\RequestException $e) {
    echo 'Guzzle error: ' . $e->getMessage();
}
?>

SOCKS proxy

SOCKS proxy'leri proxy URI'sinde socks şemasıyla belirtin.

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'http://example.com/',
    // SOCKS5 proxy
    'proxy' => 'socks5://socks5.example.com:1080',
]);

try {
    $response = $client->request('GET', 'api/data');
    echo $response->getBody();
} catch (GuzzleHttp\Exception\RequestException $e) {
    echo 'Guzzle error: ' . $e->getMessage();
}
?>

İstek bazında proxy

proxy seçeneği tek tek istekler için geçersiz kılınabilir veya ayrıca belirtilebilir.

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client(); // Global proxy yok

try {
    $response = $client->request('GET', 'http://example.com/api/data', [
        'proxy' => 'http://perrequestproxy.example.com:8080', // Yalnızca bu istek için proxy
    ]);
    echo $response->getBody();
} catch (GuzzleHttp\Exception\RequestException $e) {
    echo 'Guzzle error: ' . $e->getMessage();
}
?>

Proxy'ler için yaygın Guzzle seçenekleri

  • proxy: proxy URI string'i (http://, https://, socks4://, socks5://).
  • verify: SSL sertifika doğrulamasını denetler (true, false veya CA paketinin yolu).
  • timeout: isteğin saniye cinsinden toplam zaman aşımı.
  • connect_timeout: sunucuya bağlanmak için saniye cinsinden zaman aşımı.
  • allow_redirects: yönlendirme yönetimini denetler (true, false veya seçenek dizisi).

file_get_contents kullanımı

file_get_contents, URL'ler dahil dosya içeriğini okumak için kullanılan basit bir fonksiyondur. Proxy ayarlarını yapılandırmak için stream context kullanabilir, ancak cURL veya Guzzle'a kıyasla daha az kontrol ve hata yönetimi sunar. Basit proxy gereksinimleri olan temel HTTP/HTTPS istekleri için uygundur.

Temel proxy kurulumu

Proxy ayarlarını http seçenekleri içinde tanımlamak için stream_context_create kullanın.

<?php
$proxy = 'tcp://proxy.example.com:8080';
$url = 'http://example.com/api/data';

$context = stream_context_create([
    'http' => [
        'proxy' => $proxy,
        'request_fulluri' => true, // HTTP proxy'ler için şart
    ],
]);

$response = @file_get_contents($url, false, $context);

if ($response === false) {
    echo 'Failed to retrieve content via proxy.';
} else {
    echo $response;
}
?>

HTTP proxy kullanırken request_fulluri mutlaka true olmalıdır; bu, istemciye istek satırında tam URI'yi göndermesini söyler (ör. GET http://example.com/path HTTP/1.0).

HTTPS proxy

HTTPS hedefleri için https stream wrapper'ı proxy kurulumunu http ile benzer şekilde ele alır.

<?php
$proxy = 'tcp://proxy.example.com:8080';
$url = 'https://secure.example.com/data';

$context = stream_context_create([
    'http' => [ // Not: CONNECT tünelleme için proxy yapılandırması yine 'http' altındadır
        'proxy' => $proxy,
        'request_fulluri' => true,
    ],
    'ssl' => [ // SSL/TLS doğrulama seçenekleri
        'verify_peer' => false, // Test için kapatın, üretimde açın
        'verify_peer_name' => false,
    ],
]);

$response = @file_get_contents($url, false, $context);

if ($response === false) {
    echo 'Failed to retrieve content via proxy.';
} else {
    echo $response;
}
?>

Kimlik doğrulamalı proxy

file_get_contents için proxy kimlik doğrulaması genellikle http context seçenekleri içinde Proxy-Authorization başlığının elle ayarlanmasıyla yapılır.

<?php
$proxy = 'tcp://proxy.example.com:8080';
$url = 'http://example.com/api/data';
$proxyUser = 'proxyuser';
$proxyPass = 'proxypassword';

// Basic kimlik doğrulama için username:password değerini Base64 ile kodla
$authHeader = 'Proxy-Authorization: Basic ' . base64_encode("$proxyUser:$proxyPass");

$context = stream_context_create([
    'http' => [
        'proxy' => $proxy,
        'request_fulluri' => true,
        'header' => $authHeader,
    ],
]);

$response = @file_get_contents($url, false, $context);

if ($response === false) {
    echo 'Failed to retrieve content via proxy.';
} else {
    echo $response;
}
?>

Proxy'lerle file_get_contents sınırlamaları

  • SOCKS proxy desteği yok: PHP'nin stream wrapper'ları SOCKS proxy'leri yerel olarak desteklemez.
  • Sınırlı hata yönetimi: hata bilgisi asgari düzeydedir; uyarılara veya false dönüş değerine dayanır.
  • Daha az kontrol: istek başlıkları, zaman aşımları ve yönlendirme yönetimi üzerinde ayrıntılı kontrol daha esnek değildir.
  • Performans: eşzamanlı veya çok sayıda istekte cURL'e kıyasla daha düşük performanslı olabilir.

PHP proxy yöntemlerinin karşılaştırması

Özellik cURL (php-curl ile) Guzzle (Composer ile) file_get_contents (stream context ile)
Kullanım kolaylığı Orta (doğrudan seçenek tanımlama) Yüksek (nesne yönelimli, akıcı arayüz) Yüksek (basit fonksiyon çağrısı, context kurulumu)
Proxy türleri HTTP, HTTPS (CONNECT), SOCKS4/4a/5/5h HTTP, HTTPS (CONNECT), SOCKS4/5 HTTP, HTTPS (CONNECT)
Kimlik doğrulama CURLOPT_PROXYUSERPWD URI içine gömülü (user:pass@host) Elle Proxy-Authorization başlığı
Hata yönetimi Ayrıntılı (curl_errno, curl_error) Sağlam (exception'lar, PSR-7 yanıtları) Temel (false dönüşü, uyarılar)
Kontrol düzeyi Yüksek (tüm cURL seçenekleri üzerinde ayrıntılı kontrol) Yüksek (cURL'ü sarar, üst seviye seçenekler sunar) Düşük (stream context seçenekleriyle sınırlı)
SSL doğrulama CURLOPT_SSL_VERIFYPEER, CURLOPT_SSL_VERIFYHOST verify seçeneği ssl context seçenekleri (verify_peer, verify_peer_name)
Yönlendirme yönetimi CURLOPT_FOLLOWLOCATION, CURLOPT_MAXREDIRS allow_redirects seçeneği Sınırlı (HTTP için otomatik, az yapılandırılabilir)
Bağımlılıklar PHP cURL eklentisi PHP cURL eklentisi, Composer, Guzzle paketi Yok (PHP'nin yerleşik fonksiyonu)
En uygun kullanım Karmaşık, yüksek performanslı, düşük seviye entegrasyon Modern uygulamalar, REST API'ler, sağlam hata yönetimi Temel GET istekleri için basit, hızlı script'ler
Güncellendi: 03.03.2026
Kategoriye dön

Bunları da okuyun

Guides 2 dk

Nike SNKRS için Proxy: Sınırlı Sürümler ve Çoklu Katılım

Nike SNKRS'ta birden fazla hesapla çekilişlere katılmak, IP limitlerini aşmak ve ban yemeden sınırlı sürümleri kapmak için residential veya mobil proxy kullanın. Hangi türü seçmeli ve nasıl kurmalı.

Guides 2 dk

iPhone'da Proxy Nasıl Kurulur (Wi-Fi ve SOCKS5)

iPhone'da proxy'yi yerleşik Wi-Fi ayarlarından (HTTP/HTTPS) veya SOCKS5 ile hücresel kapsama için Shadowrocket gibi bir uygulamayla kurun. Adım adım iOS kurulumu ve bilinmesi gereken kısıtlar.

Guides 3 dk

Tinder için proxy: çoklu hesap ve ban'lerden kaçınma

Birden fazla profil işletmek ve IP shadowban'lerinden kaçınmak için Tinder'da mobil veya residential proxy kullanın. Mobilin neden kazandığı, kurulumu ve proxy'nin şehri neden değiştirmediği.

Guides 2 dk

StockX için proxy: fiyat takibi ve hesap yönetimi

StockX'te fiyatları izlemek, birden fazla hesap çalıştırmak ve drop'ları yasaklanmadan kapmak için residential, ISP veya mobil proxy kullanın. Hangi türü seçeceğinizi ve nasıl kuracağınızı anlatıyoruz.

Guides 3 dk

OpenAI API için Proxy: Erişim, Hız Limitleri ve Kurulum

OpenAI API'yi residential veya ISP proxy üzerinden yönlendirerek desteklenen bölgelere erişin, 429 hız limitlerinden kaçının ve hesapları izole edin. Hangi proxy'yi seçmeli ve Python kurulum örnekleri.

Guides 1 dk

E2E testleri için Cypress'te proxy kurulumu

Cypress'te proxy kurulumu: HTTP_PROXY değişkenleri, cy-proxy-middleware ve coğrafi konuma bağlı içeriğin test edilmesi.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.