Volba proxy v Guzzle přijímá úplnou URL koncového bodu. Nastavte ji u požadavku, má-li vybranou IP používat jen tato operace.

<?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();

Příklad předpokládá Guzzle 7 nainstalovaný přes Composer. Dokumentační adresu nahraďte skutečnou HTTP proxy od poskytovatele nebo ze seznamu HTTP proxy. Cíl ponechte v URL požadavku: proxy je prostředník, nikoli stahovaný prostředek.

Zde je http_errors false, aby chybová HTTP odpověď zůstala dostupná ke zkoumání. Selhání připojení dál vyvolávají výjimky přenosu. HTTPS tunel odmítnutý při vytváření tak může selhat dříve, než dostanete běžný objekt odpovědi webu.

Pokud se limity připojení chovají jinak, zkontrolujte handler

Guzzle může používat různé HTTP handlery. Dokumentace uvádí, že vestavěný handler cURL podporuje connect_timeout. Vlastní handler nebo prostředí bez PHP cURL nemusí být rovnocenné. Než předpokládáte, že zkopírovaná volba časového limitu funguje, ověřte handler aplikace.

Vyplatí se nastavit i celkový timeout. Záznamy bezplatných seznamů mohou mezi kontrolami přestat odpovídat a výchozí hodnota není užitečná lhůta pro požadavek, který musí skončit rychle.

Použití mapy proxy

Mapa umožňuje volit trasy podle schématu cíle a explicitně uvést hostitele pro obejití proxy:

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

Použijte toto pole místo řetězcové volby. Klíč HTTPS vybírá cíle HTTPS; jeho hodnota HTTP stále popisuje naslouchající rozhraní proxy. Jiný naslouchací protokol vyžaduje jinou konfiguraci koncového bodu.

Pokud zadáte volbu proxy požadavku sami, Guzzle očekává i zamýšlené hodnoty no, místo aby je automaticky kopíroval z NO_PROXY. Prázdný seznam je užitečný pro izolovaný test proxy. Má-li aplikace záměrná pravidla obcházení, zachovejte je explicitně.

Související články