Establir una IP de proxy per a una petició Guzzle
Utilitzeu l’opció proxy per petició de Guzzle i enteneu el temps de connexió dependent del gestor i la llista explícita d’exclusions.
L’opció proxy de Guzzle accepta un URL complet de punt de connexió. Establiu-la a la petició quan només aquella operació hagi d’utilitzar la IP escollida.
<?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();
L’exemple pressuposa Guzzle 7 instal·lat mitjançant Composer. Substituïu l’adreça de documentació per un proxy HTTP real del proveïdor o de la llista de proxys HTTP. Manteniu la destinació a l’URL de la petició: el proxy és intermediari, no el recurs que es descarrega.
Aquí http_errors és false perquè la resposta d’error HTTP continuï disponible per examinar-la. Els errors de connexió continuen generant excepcions de transferència. Un túnel HTTPS rebutjat durant l’establiment pot fallar abans que rebeu un objecte de resposta normal del web.
Reviseu el gestor si els límits de connexió es comporten diferent
Guzzle pot fer servir diversos gestors HTTP. La documentació diu que el gestor cURL integrat admet connect_timeout. Un gestor personalitzat o un entorn sense PHP cURL no és necessàriament equivalent. Comproveu el gestor de l’aplicació abans de suposar que una opció de temps copiada està fent efecte.
També convé definir el timeout global. Les entrades de llistes gratuïtes poden deixar de respondre entre comprovacions, i el valor predeterminat no és un termini útil per a una petició que ha d’acabar aviat.
Utilitzar un mapa de proxys
Un mapa permet escollir rutes segons l’esquema de la destinació i especificar els amfitrions que eviten el proxy:
'proxy' => [
'http' => 'http://203.0.113.10:8080',
'https' => 'http://203.0.113.10:8080',
'no' => [],
],
Utilitzeu aquest array en lloc de l’opció de cadena. La clau HTTPS tria destinacions HTTPS; el seu valor HTTP encara descriu el servei d’escolta del proxy. Un protocol d’escolta diferent requereix una configuració diferent del punt de connexió.
Si proporcioneu l’opció proxy de la petició, Guzzle espera que indiqueu els valors no desitjats en lloc de copiar-los automàticament de NO_PROXY. Una llista buida és útil per a una prova aïllada de proxy. Si l’aplicació té regles deliberades d’exclusió, conserveu-les explícitament.