Establecer un IP de proxy para unha solicitude Guzzle
Usa a opción proxy por solicitude de Guzzle e entende o tempo de conexión dependente do xestor e a lista explícita de exclusións.
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.