Guzzle’ın proxy seçeneği tam uç nokta URL’si alır. Seçilen IP’yi yalnızca o işlem kullanacaksa istekte ayarlayın.

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

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
    'proxy' => 'http://203.0.113.10:8080',
    'connect_timeout' => 5,
    'timeout' => 15,
    'http_errors' => false,
]);

echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();

Örnek, Guzzle 7’nin Composer üzerinden kurulu olduğunu varsayar. Belgeleme adresini sağlayıcıdan veya HTTP proxy listesinden gerçek HTTP proxy ile değiştirin. Hedefi istek URL’sinde tutun: proxy aracıdır, indirilen kaynak değildir.

Burada http_errors false olduğundan HTTP hata yanıtı incelemeye açık kalır. Bağlantı hataları hâlâ aktarım istisnaları fırlatır. Dolayısıyla kurulum sırasında reddedilen HTTPS tüneli, normal site yanıt nesnesini almadan başarısız olabilir.

Bağlantı sınırları farklı davranıyorsa işleyiciyi kontrol edin

Guzzle farklı HTTP işleyicileri kullanabilir. Belgeleri, yerleşik cURL işleyicisinin connect_timeout desteklediğini belirtir. Özel işleyici veya PHP cURL bulunmayan ortam mutlaka eşdeğer değildir. Kopyalanmış zaman aşımı seçeneğinin etkili olduğunu varsaymadan uygulamanın işleyicisini kontrol edin.

Toplam timeout da ayarlanmaya değer. Ücretsiz liste kayıtları kontroller arasında yanıt vermeyi kesebilir ve varsayılan değer hızla bitmesi gereken istek için yararlı bir son süre değildir.

Proxy haritası kullanma

Harita, hedef şemasına göre rota seçmenizi ve atlanacak ana makineleri açıkça belirtmenizi sağlar:

'proxy' => [
    'http' => 'http://203.0.113.10:8080',
    'https' => 'http://203.0.113.10:8080',
    'no' => [],
],

Bu diziyi dize seçeneği yerine kullanın. HTTPS anahtarı HTTPS hedeflerini seçer; HTTP değeri yine proxy dinleyicisini tanımlar. Farklı dinleyici protokolü farklı uç nokta yapılandırması gerektirir.

İsteğin proxy seçeneğini kendiniz verdiğinizde Guzzle, istenen no değerlerini de vermenizi bekler; bunları NO_PROXY değişkeninden otomatik kopyalamaz. Boş liste izole proxy testi için yararlıdır. Uygulamada kasıtlı atlama kuralları varsa bunları açıkça koruyun.

İlgili makaleler