busqué en internet y no podía encontrar nada sobre stream_context_set_default() con una contraseña protegida servidor proxy.
Luego pensé que la contraseña en la autorización básica se envía en encabezados. ¡Así que modifiqué los encabezados con la contraseña extraída de una solicitud CURL y funcionó perfectamente!
Así es como se hace:
Primera enviar esta solicitud a cualquier dominio (example.com) de la siguiente manera:
curl -v -U user:pass -x your_proxy_ip:port --url https://example.com
Ver el rizo enviado cabeceras y tengo estas líneas de proxy para su uso posterior:
> Trying XXX.XXX.XXX.XXX...
> Connected to XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) port YYYY (#0)
> Establish HTTP proxy tunnel to example.com:443
> Proxy auth using Basic with user 'your_username_here'
> CONNECT example.com:443 HTTP/1.1
> Host: example.com:443
> Proxy-Authorization: Basic YW1hem9uOnXXXXXXXXXXXXXXX25SMg
> User-Agent: curl/7.47.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
< Proxy replied OK to CONNECT request
bien ahora es el momento de construir nuestra cabecera personalizada:
$default_opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Proxy-Authorization: Basic YW1hem9uOnXXXXXXXXXXXXXXX25SMg\r\n" .
"Proxy-Connection: Keep-Alive",
'proxy'=>"XXX.XXX.XXX.XXX:YYYY"
)
);
$default = stream_context_set_default($default_opts);
$result = file_get_contents("https://ipleak.net/json/");
print_r(json_decode($result));
Y funciona perfecto, ¡se obtiene la IP de su servidor proxy en respuesta!
gracias por la respuesta. pero considere que esto se puede aplicar solo para mis propios códigos. ¿Qué pasa con otras aplicaciones PHP como Drupal? Necesito que PHP se conecte a través de Proxy no a través del código. – Alexar