Proxy-IP:n asettaminen Guzzle-pyynnölle
Käytä Guzzlen pyyntökohtaista proxy-asetusta ja ymmärrä käsittelijästä riippuva yhteysaikaraja sekä erikseen annettava ohituslista.
Guzzlen proxy-asetus hyväksyy täydellisen päätepiste-URL:n. Aseta se pyyntöön, kun vain kyseisen toiminnon tulee käyttää valitsemaasi IP:tä.
<?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();
Esimerkki olettaa Guzzle 7:n olevan asennettu Composerilla. Korvaa dokumentaatio-osoite toimivalla HTTP-välityspalvelimella tarjoajalta tai HTTP-välityspalvelinten luettelosta. Pidä kohde pyyntö-URL:ssa: välityspalvelin on välittäjä, ei ladattava resurssi.
Tässä http_errors on false, jotta HTTP-virhevastaus säilyy tarkasteltavana. Yhteysvirheet aiheuttavat yhä siirtopoikkeuksia. Muodostuksen aikana hylätty HTTPS-tunneli voi siten epäonnistua ennen kuin saat tavallisen sivuston vastausolion.
Tarkista käsittelijä, jos yhteysrajat toimivat eri tavalla
Guzzle voi käyttää erilaisia HTTP-käsittelijöitä. Dokumentaatio kertoo sisäisen cURL-käsittelijän tukevan asetusta connect_timeout. Oma käsittelijä tai ympäristö ilman PHP cURLia ei välttämättä vastaa sitä. Tarkista sovelluksen käsittelijä ennen kuin oletat kopioidun aikaraja-asetuksen toimivan.
Myös yleinen timeout kannattaa asettaa. Ilmaislistan osoitteet voivat lakata vastaamasta tarkistusten välillä, eikä oletusarvo anna hyödyllistä määräaikaa nopeasti päättyvälle pyynnölle.
Proxy-kartan käyttö
Kartalla voit valita reitin kohteen URL-skeeman mukaan ja antaa erikseen välityspalvelimen ohittavat isännät:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Käytä tätä taulukkoa merkkijonoasetuksen sijaan. HTTPS-avain valitsee HTTPS-kohteet; sen HTTP-arvo kuvaa edelleen välityspalvelimen kuuntelijaa. Eri kuunteluprotokolla vaatii eri päätepisteasetuksen.
Kun annat pyynnön proxy-asetuksen itse, Guzzle odottaa sinun antavan myös tarkoitetut no-arvot sen sijaan, että se kopioisi ne automaattisesti muuttujasta NO_PROXY. Tyhjä lista sopii erilliseen välityspalvelintestiin. Jos sovelluksessa on tarkoituksellisia ohitussääntöjä, säilytä ne erikseen asetettuina.