El contexto de proxy HTTP de PHP no reconfigura un flujo TCP sin procesar
Distinga las opciones de proxy del contenedor HTTP de PHP del trabajo de protocolo necesario en una conexión TCP de stream_socket_client.
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.