Ustaw IP proxy dla żądania Guzzle
Użyj opcji proxy dla pojedynczego żądania Guzzle i poznaj zależny od handlera limit czasu połączenia oraz jawne zasady listy pomijania.
Opcja proxy w Guzzle przyjmuje pełny URL punktu końcowego. Ustaw ją w żądaniu, jeśli tylko ta operacja ma używać wybranego IP.
<?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();
Przykład zakłada Guzzle 7 zainstalowane przez Composer. Zastąp adres dokumentacyjny rzeczywistym proxy HTTP dostawcy lub z listy proxy HTTP. Cel zostaw w URL-u żądania: proxy jest pośrednikiem, a nie pobieranym zasobem.
Tutaj http_errors ma wartość false, aby odpowiedź błędu HTTP pozostała dostępna do analizy. Błędy połączenia nadal zgłaszają wyjątki transferu. Tunel HTTPS odrzucony podczas zestawiania może więc zawieść, zanim otrzymasz zwykły obiekt odpowiedzi witryny.
Sprawdź handler, gdy limity połączenia działają inaczej
Guzzle może używać różnych handlerów HTTP. Dokumentacja mówi, że wbudowany handler cURL obsługuje connect_timeout. Własny handler lub środowisko bez PHP cURL niekoniecznie są równoważne. Sprawdź handler aplikacji, zanim założysz, że skopiowana opcja limitu czasu działa.
Warto ustawić też całkowity timeout. Wpisy darmowych list mogą przestać odpowiadać między kontrolami, a wartość domyślna nie daje przydatnego terminu dla żądania, które musi szybko się skończyć.
Używanie mapy proxy
Mapa pozwala wybierać trasy według schematu celu i jawnie podawać hosty pomijające proxy:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Użyj tej tablicy zamiast opcji tekstowej. Klucz HTTPS wybiera cele HTTPS; jego wartość HTTP nadal opisuje nasłuch proxy. Inny protokół nasłuchu wymaga innej konfiguracji punktu końcowego.
Gdy sam podajesz opcję proxy żądania, Guzzle oczekuje również zamierzonych wartości no, zamiast kopiować je automatycznie z NO_PROXY. Pusta lista przydaje się do izolowanego testu proxy. Jeśli aplikacja ma celowe reguły pomijania, zachowaj je jawnie.