La opción de proxy del contexto HTTP pertenece al contenedor de flujo HTTP de PHP. Una conexión TCP sin procesar creada por stream_socket_client no se convierte en cliente de proxy HTTP solo porque esa opción exista en un objeto de contexto.

Si el código se conecta directamente a la dirección de destino, abre esa ruta TCP. Si se conecta a la dirección del proxy en su lugar, los siguientes bytes todavía deben implementar el protocolo de proxy.

Para HTTP CONNECT, eso significa un host y un puerto de destino válidos, cualquier autenticación de proxy necesaria, un análisis completo de la respuesta y la aceptación antes de que comience el protocolo de destino. Una sola llamada a fread que busca una frase de éxito no es un conector completo. TCP puede dividir una respuesta entre lecturas o devolver bytes adicionales que deben conservarse.

Para un destino HTTPS, TLS debe iniciarse después a través del túnel establecido y verificar la identidad del destino. El nombre de host del proxy no es la identidad del certificado del sitio web.

Use un cliente o conector con soporte documentado para el protocolo de proxy requerido cuando la tarea es simplemente obtener una URL. Los ajustes HTTP y SOCKS de PHP cURL ofrecen una ruta admitida para obtener una URL. Un flujo sin procesar es útil cuando la aplicación asume ese trabajo de protocolo de nivel inferior; no debería heredar en silencio suposiciones de un ejemplo de contenedor HTTP no relacionado.

Artículos relacionados