Angi en proxy-IP for en Guzzle-forespørsel
Bruk Guzzles proxyvalg per forespørsel og forstå handleravhengig tilkoblingstimeout og eksplisitte unntakslister.
Guzzles alternativ proxy godtar en fullstendig endepunkt-URL. Angi det på forespørselen når bare denne operasjonen skal bruke den valgte IP-en.
<?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 forutsetter Guzzle 7 installert via Composer. Erstatt dokumentasjonsadressen med en faktisk HTTP-proxy fra leverandøren eller listen over HTTP-proxyer. Behold destinasjonen i forespørsels-URL-en: proxyen er mellomledd, ikke ressursen som lastes ned.
Her er http_errors false, slik at et HTTP-feilsvar fortsatt kan undersøkes. Tilkoblingsfeil kaster fortsatt overføringsunntak. En HTTPS-tunnel som avvises under opprettelsen kan derfor feile før du mottar et vanlig svarobjekt fra nettstedet.
Kontroller handleren når tilkoblingsgrenser oppfører seg annerledes
Guzzle kan bruke ulike HTTP-handlere. Dokumentasjonen sier at den innebygde cURL-handleren støtter connect_timeout. En egen handler eller et miljø uten PHP cURL er ikke nødvendigvis tilsvarende. Kontroller handleren applikasjonen bruker før du antar at et kopiert timeoutvalg virker.
Det er også verdt å angi samlet timeout. Gratislisteoppføringer kan slutte å svare mellom kontroller, og standardverdien er ingen nyttig frist for en forespørsel som må avsluttes raskt.
Bruke et proxykart
Et kart lar deg velge ruter etter destinasjonsskjema og angi eksplisitte verter som skal omgå proxyen:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Bruk denne matrisen i stedet for strengalternativet. HTTPS-nøkkelen velger HTTPS-destinasjoner; HTTP-verdien beskriver fortsatt proxyens lytter. En annen lytterprotokoll krever annen endepunktkonfigurasjon.
Når du selv angir proxyvalget på forespørselen, forventer Guzzle at du oppgir ønskede no-verdier i stedet for automatisk å kopiere dem fra NO_PROXY. En tom liste er nyttig for en isolert proxytest. Har applikasjonen bevisste omgåelsesregler, bevar dem eksplisitt.