A opción de proxy do contexto HTTP pertence ao envoltorio de fluxo HTTP de PHP. Unha conexión TCP en bruto creada por stream_socket_client non se converte en cliente de proxy HTTP só porque esa opción exista nun obxecto de contexto.

Se o código se conecta directamente ao enderezo de destino, abre esa ruta TCP. Se se conecta no seu lugar ao enderezo do proxy, os seguintes bytes aínda deben implementar o protocolo de proxy.

Para HTTP CONNECT iso significa unha máquina e un porto de destino válidos, calquera autenticación de proxy necesaria, unha análise completa da resposta e a aceptación antes de que comece o protocolo de destino. Unha soa chamada a fread que busca unha frase de éxito non é un conector completo. TCP pode dividir unha resposta entre lecturas ou devolver bytes adicionais que deben conservarse.

Para un destino HTTPS, TLS debe iniciarse despois a través do túnel establecido e verificar a identidade do destino. O nome de máquina do proxy non é a identidade do certificado do sitio web.

Use un cliente ou conector con soporte documentado para o protocolo de proxy requirido cando a tarefa é simplemente obter un URL. Os axustes HTTP e SOCKS de PHP cURL ofrecen unha ruta admitida para obter un URL. Un fluxo en bruto é útil cando a aplicación asume ese traballo de protocolo de nivel inferior; non debería herdar en silencio suposicións dun exemplo de envoltorio HTTP non relacionado.

Artigos relacionados