Alternativet proxy i Guzzle tar en fullstendig URL til endepunktet. Sett det på forespørselen når kun denne operasjonen skal bruke IP-en du valgte.

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

Eksemplet antar at Guzzle 7 er installert med Composer. Bytt dokumentasjonsadressen med en virkelig HTTP-proxy fra leverandøren eller listen over HTTP-proxyer. La målet stå i URL-en til forespørselen: proxyen er et mellomledd, ikke ressursen som hentes.

http_errors er her false for at en HTTP-feilrespons skal kunne inspiseres. Feil i tilkoblingen gir fremdeles overføringsunntak. En HTTPS-tunnel som avvises mens den settes opp kan derfor feile før du får et normalt responsobjekt fra nettstedet.

Sjekk handleren hvis tilkoblingsgrensene virker annerledes

Guzzle kan bruke forskjellige HTTP-handlere. Dokumentasjonen oppgir at den medfølgende cURL-handleren støtter connect_timeout. En egendefinert handler eller en installasjon uten PHP cURL er ikke nødvendigvis likeverdig. Sjekk hva programmet faktisk bruker før du antar at en kopiert timeoutinnstilling har effekt.

Du bør også vurdere å sette total timeout. Gratisoppføringer kan slutte å svare mellom sjekkene, og standardverdien gir ingen nyttig frist for en forespørsel som må bli ferdig raskt.

Bruke en proxytilordning

En tilordning lar deg velge rute ut fra skjemaet til målet og angi eksplisitte verter som ikke skal gå via proxy:

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

Bruk denne arrayen i stedet for strengverdien. Nøkkelen HTTPS velger HTTPS-mål; HTTP-verdien beskriver fortsatt proxyens lyttetjeneste. En annen protokoll på lyttetjenesten krever en annen endepunktkonfigurasjon.

Når du selv setter forespørselens proxyalternativ, forventer Guzzle at du også leverer eventuelle ønskede no-verdier. De kopieres ikke automatisk fra NO_PROXY. En tom liste passer for en isolert proxytest. Hvis programmet har tilsiktede unntaksregler, skal disse bevares eksplisitt.

Relaterte artikler