Guzzles Option proxy akzeptiert eine vollständige Endpunkt-URL. Setzen Sie sie an der Anfrage, wenn nur dieser Vorgang die gewählte IP nutzen soll.

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

Das Beispiel setzt voraus, dass Guzzle 7 über Composer installiert ist. Ersetzen Sie die Dokumentationsadresse durch einen echten HTTP-Proxy vom Anbieter oder aus der HTTP-Proxy-Liste. Das Ziel bleibt in der Anfrage-URL: Der Proxy ist Vermittler, nicht die herunterzuladende Ressource.

Hier ist http_errors false, damit eine HTTP-Fehlerantwort zur Untersuchung verfügbar bleibt. Verbindungsfehler werfen weiterhin Transfer-Ausnahmen. Ein beim Aufbau abgelehnter HTTPS-Tunnel kann daher scheitern, bevor Sie ein gewöhnliches Website-Antwortobjekt erhalten.

Bei abweichenden Verbindungslimits den Handler prüfen

Guzzle kann verschiedene HTTP-Handler verwenden. Laut Dokumentation unterstützt der eingebaute cURL-Handler connect_timeout. Ein eigener Handler oder eine Umgebung ohne PHP cURL ist nicht unbedingt gleichwertig. Prüfen Sie den tatsächlich verwendeten Handler, bevor Sie annehmen, eine kopierte Timeout-Option wirke.

Auch das gesamte timeout sollte gesetzt werden. Einträge kostenloser Listen können zwischen Prüfungen aufhören zu antworten; der Standardwert ist keine brauchbare Frist für eine Anfrage, die zügig enden muss.

Eine Proxy-Zuordnung verwenden

Eine Zuordnung wählt Wege nach dem Zielschema aus und erlaubt explizite Hosts zur Proxy-Umgehung:

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

Verwenden Sie dieses Array statt der Zeichenkette. Der HTTPS-Schlüssel wählt HTTPS-Ziele; sein HTTP-Wert beschreibt weiterhin den Proxy-Listener. Ein anderes Listener-Protokoll erfordert eine andere Endpunktkonfiguration.

Wenn Sie die Proxy-Anfrageoption selbst setzen, erwartet Guzzle auch die gewünschten no-Werte von Ihnen, statt sie automatisch aus NO_PROXY zu übernehmen. Eine leere Liste ist für einen isolierten Proxy-Test nützlich. Hat die Anwendung bewusst eingerichtete Umgehungsregeln, bewahren Sie diese stattdessen ausdrücklich.

Ähnliche Artikel