Možnost proxy v Guzzle sprejme polni URL končne točke. Nastavite jo v zahtevi, ko naj samo ta operacija uporablja izbrani 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();

Primer predpostavlja Guzzle 7, nameščen s Composerjem. Dokumentacijski naslov zamenjajte s pravim posrednikom HTTP ponudnika ali s seznama proxyjev HTTP. Cilj ohranite v URL-ju zahteve: posrednik je vmesni člen, ne vir za prenos.

Tu je http_errors false, da odgovor z napako HTTP ostane na voljo za pregled. Napake povezovanja še vedno sprožijo izjeme prenosa. Tunel HTTPS, zavrnjen med vzpostavljanjem, lahko zato odpove pred prejemom običajnega objekta odgovora spletnega mesta.

Preverite obdelovalnik, če se omejitve povezave vedejo drugače

Guzzle lahko uporablja različne obdelovalnike HTTP. Dokumentacija navaja, da vgrajeni obdelovalnik cURL podpira connect_timeout. Lastni obdelovalnik ali okolje brez PHP cURL nista nujno enakovredna. Preverite obdelovalnik aplikacije, preden domnevate, da kopirana možnost časovne omejitve deluje.

Vredno je nastaviti tudi skupni timeout. Vnosi brezplačnih seznamov lahko med preverjanji nehajo odgovarjati, privzeta vrednost pa ni uporaben rok za zahtevo, ki se mora hitro končati.

Uporaba preslikave proxyjev

Preslikava omogoča izbiro poti po shemi cilja in izrecno navedbo gostiteljev za obhod proxyja:

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

Uporabite to polje namesto niza. Ključ HTTPS izbira cilje HTTPS; njegova vrednost HTTP še vedno opisuje poslušalca proxyja. Drug protokol poslušalca zahteva drugo nastavitev končne točke.

Ko možnost proxy v zahtevi navedete sami, Guzzle pričakuje tudi želene vrednosti no, namesto da jih samodejno kopira iz NO_PROXY. Prazen seznam je uporaben za izoliran test proxyja. Če ima aplikacija namerna pravila obhoda, jih ohranite izrecno.

Sorodni članki