HTTP 컨텍스트의 프록시 옵션은 PHP의 HTTP 스트림 래퍼에 속합니다. stream_socket_client가 만든 원시 TCP 연결은 그 옵션이 컨텍스트 객체에 있다는 이유만으로 HTTP 프록시 클라이언트가 되지 않습니다.

코드가 대상 주소에 직접 연결한다면 그 TCP 경로를 여는 것입니다. 대신 프록시 주소에 연결한다면 다음 바이트들은 여전히 프록시 프로토콜을 구현해야 합니다.

HTTP CONNECT의 경우 이는 유효한 대상 호스트와 포트, 필요한 모든 프록시 인증, 응답의 완전한 분석, 그리고 대상 프로토콜이 시작되기 전의 수락을 뜻합니다. 성공 문구를 찾는 단일 fread 호출은 완전한 커넥터가 아닙니다. TCP는 응답을 여러 번의 읽기에 걸쳐 나누거나 보존해야 하는 추가 바이트를 반환할 수 있습니다.

HTTPS 대상의 경우 TLS는 그다음 설정된 터널을 통해 시작되어 대상의 신원을 검증해야 합니다. 프록시 호스트 이름은 웹사이트의 인증서 신원이 아닙니다.

작업이 단순히 URL을 가져오는 것이라면 필요한 프록시 프로토콜에 대해 문서화된 지원이 있는 클라이언트나 커넥터를 사용하십시오. PHP cURL의 HTTP 및 SOCKS 설정은 지원되는 URL 가져오기 경로 하나를 제공합니다. 원시 스트림은 애플리케이션이 그 저수준 프로토콜 작업을 직접 맡을 때 유용합니다. 관련 없는 HTTP 래퍼 예제에서 가정을 조용히 물려받아서는 안 됩니다.

관련 글