Proxy IP nustatymas Guzzle užklausai
Naudokite Guzzle užklausos proxy parinktį ir supraskite nuo tvarkyklės priklausantį prisijungimo laiką bei aiškų apėjimo sąrašą.
Guzzle parinktis proxy priima visą galinio taško URL. Nustatykite ją užklausai, kai pasirinktą IP turi naudoti tik ta operacija.
<?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();
Pavyzdys numato per Composer įdiegtą Guzzle 7. Dokumentacijos adresą pakeiskite tikru HTTP tarpiniu serveriu iš tiekėjo arba HTTP tarpinių serverių sąrašo. Tikslą palikite užklausos URL: tarpinis serveris yra tarpininkas, ne atsisiunčiamas išteklius.
Čia http_errors yra false, kad HTTP klaidos atsakymas liktų prieinamas patikrai. Ryšio klaidos vis dar išmeta perdavimo išimtis. Kuriant atmestas HTTPS tunelis todėl gali nepavykti dar prieš gaunant įprastą svetainės atsakymo objektą.
Patikrinkite tvarkyklę, jei ryšio ribos veikia kitaip
Guzzle gali naudoti skirtingas HTTP tvarkykles. Dokumentacija teigia, kad įtaisyta cURL tvarkyklė palaiko connect_timeout. Sava tvarkyklė arba aplinka be PHP cURL nebūtinai lygiavertė. Patikrinkite programos tvarkyklę prieš manydami, kad nukopijuota laiko ribos parinktis veikia.
Taip pat verta nustatyti bendrą timeout. Nemokamo sąrašo įrašai tarp patikrų gali nustoti atsakyti, o numatytoji reikšmė nėra naudingas terminas užklausai, kuri turi greitai baigtis.
Proxy žemėlapio naudojimas
Žemėlapis leidžia rinktis maršrutus pagal tikslo schemą ir aiškiai nurodyti pagrindinius kompiuterius, apeinančius tarpinį serverį:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Šį masyvą naudokite vietoje eilutės parinkties. Raktas HTTPS parenka HTTPS tikslus; jo HTTP reikšmė vis dar apibūdina tarpinio serverio klausytoją. Kitam klausymo protokolui reikia kitos galinio taško konfigūracijos.
Kai užklausos proxy parinktį pateikiate patys, Guzzle tikisi ir norimų no reikšmių, užuot automatiškai kopijavęs jas iš NO_PROXY. Tuščias sąrašas tinka izoliuotam tarpinio serverio bandymui. Jei programoje yra sąmoningų apėjimo taisyklių, aiškiai jas išsaugokite.