Guzzleova opcija proxy prihvata puni URL krajnje tačke. Postavite je na zahtjevu kada samo ta operacija treba koristiti izabrani 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();

Primjer pretpostavlja Guzzle 7 instaliran putem Composera. Zamijenite dokumentacijsku adresu stvarnim HTTP proxyjem od pružaoca ili iz liste HTTP proxyja. Odredište ostavite u URL-u zahtjeva: proxy je posrednik, a ne resurs koji preuzimate.

Ovdje je http_errors false kako bi HTTP odgovor s greškom ostao dostupan za pregled. Greške povezivanja i dalje bacaju izuzetke prijenosa. HTTPS tunel odbijen tokom uspostavljanja zato može pasti prije nego što dobijete običan objekt odgovora stranice.

Provjerite obrađivač kada se ograničenja povezivanja ponašaju drugačije

Guzzle može koristiti različite HTTP obrađivače. Dokumentacija kaže da ugrađeni cURL obrađivač podržava connect_timeout. Prilagođeni obrađivač ili okruženje bez PHP cURL-a nisu nužno jednaki. Provjerite obrađivač aplikacije prije pretpostavke da kopirana opcija vremena čekanja djeluje.

Vrijedi postaviti i ukupni timeout. Unosi besplatnih lista mogu prestati odgovarati između provjera, a zadana vrijednost nije koristan rok za zahtjev koji mora brzo završiti.

Korištenje proxy mape

Mapa omogućava izbor putanja prema shemi odredišta i izričito navođenje hostova za zaobilaženje proxyja:

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

Koristite ovaj niz umjesto tekstualne opcije. Ključ HTTPS bira HTTPS odredišta; njegova HTTP vrijednost i dalje opisuje slušaoca proxyja. Drugi protokol slušaoca zahtijeva drugačiju konfiguraciju krajnje tačke.

Kada sami dajete proxy opciju zahtjeva, Guzzle očekuje i željene no vrijednosti umjesto da ih automatski kopira iz NO_PROXY. Prazna lista korisna je za izolirani proxy test. Ako aplikacija ima namjerna pravila zaobilaženja, sačuvajte ih izričito.

Povezani članci