Vel ein proxy-IP for ein Guzzle-førespurnad
Bruk proxyvalet i Guzzle per førespurnad, og forstå handteraravhengig tilkoplingstidsgrense og eksplisitte unntakslister.
Guzzle-valet proxy godtek ein full endepunkt-URL. Set det på førespurnaden når berre denne operasjonen skal bruka IP-en du valde.
<?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();
Dømet føreset at Guzzle 7 er installert gjennom Composer. Byt dokumentasjonsadressa med ein verkeleg HTTP-proxy frå leverandøren eller lista over HTTP-proxyar. Hald målet i førespurnads-URL-en: proxyen er eit mellomledd, ikkje ressursen som blir lasta ned.
Her er http_errors false, slik at eit HTTP-feilsvar framleis kan undersøkast. Tilkoplingsfeil kastar framleis overføringsunntak. Ein HTTPS-tunnel som blir avvist under opprettinga kan difor feila før du får eit vanleg svarobjekt frå nettstaden.
Kontroller handteraren når tilkoplingsgrenser verkar annleis
Guzzle kan bruka ulike HTTP-handterarar. Dokumentasjonen seier at den innebygde cURL-handteraren støttar connect_timeout. Ein eigen handterar eller eit miljø utan PHP cURL er ikkje nødvendigvis likeverdig. Kontroller handteraren applikasjonen brukar før du tek for gitt at eit kopiert tidsgrenseval verkar.
Det er òg verdt å setja samla timeout. Oppføringar frå gratislister kan slutta å svara mellom kontrollar, og standardverdien er ingen nyttig frist for ein førespurnad som må bli raskt ferdig.
Bruka ei proxytilordning
Ei tilordning lèt deg velja ruter etter målskjema og oppgje eksplisitte vertar som skal gå utanom proxyen:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Bruk denne tabellen i staden for strengvalet. HTTPS-nøkkelen vel HTTPS-mål; HTTP-verdien skildrar framleis lyttaren til proxyen. Ein annan lyttarprotokoll krev ei anna endepunktinnstilling.
Når du sjølv set proxyvalet for førespurnaden, ventar Guzzle at du oppgjev dei ønskte no-verdiane i staden for automatisk å kopiera dei frå NO_PROXY. Ei tom liste er nyttig for ein isolert proxytest. Har applikasjonen medvitne omgåingsreglar, må du bevara dei eksplisitt.