A opción proxy de Guzzle acepta un URL completo de punto de conexión. Establécea na solicitude cando só esa operación deba usar o IP escollido.

<?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();

O exemplo supón Guzzle 7 instalado mediante Composer. Substitúe o enderezo de documentación por un proxy HTTP real do provedor ou da lista de proxys HTTP. Mantén o destino no URL da solicitude: o proxy é un intermediario, non o recurso descargado.

Aquí http_errors é false para que unha resposta de erro HTTP siga dispoñible para examinala. Os fallos de conexión seguen xerando excepcións de transferencia. Un túnel HTTPS rexeitado durante o establecemento pode fallar antes de recibir un obxecto de resposta normal do sitio.

Revisa o xestor se os límites de conexión se comportan de forma distinta

Guzzle pode usar distintos xestores HTTP. A documentación indica que o xestor cURL integrado admite connect_timeout. Un xestor personalizado ou un contorno sen PHP cURL non é necesariamente equivalente. Revisa o xestor da aplicación antes de supoñer que unha opción de tempo copiada está funcionando.

Tamén convén establecer o timeout global. As entradas de listas gratuítas poden deixar de responder entre comprobacións, e o valor predeterminado non é un prazo útil para unha solicitude que debe rematar pronto.

Usar un mapa de proxys

Un mapa permite escoller rutas polo esquema do destino e proporcionar explicitamente equipos que eviten o proxy:

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

Usa este array no lugar da opción de cadea. A chave HTTPS selecciona destinos HTTPS; o seu valor HTTP segue describindo o servizo de escoita do proxy. Un protocolo de escoita distinto require outra configuración do punto de conexión.

Se proporcionas a opción proxy da solicitude, Guzzle espera que indiques os valores no desexados en vez de copialos automaticamente de NO_PROXY. Unha lista baleira serve para unha proba illada de proxy. Nunha aplicación con regras de exclusión deliberadas, consérvaas explicitamente.

Artigos relacionados