PHP file_get_contents로 프록시를 통해 HTTP URL 가져오기
포워드 프록시에 맞게 PHP의 HTTP 스트림 래퍼를 구성합니다. 요청 형식과 스트림 컨텍스트의 한계도 포함합니다.
PHP cURL 없이 일반 HTTP 요청을 보내려면 HTTP 스트림 래퍼에 프록시 컨텍스트를 전달하십시오:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://203.0.113.10:8080',
'request_fulluri' => true,
'timeout' => 10,
],
]);
$body = file_get_contents('http://example.com/', false, $context);
문서용 엔드포인트를 사용자의 HTTP 프록시나 HTTP 프록시 목록의 후보로 바꾸십시오. HTTP 컨텍스트 인터페이스는 proxy에 TCP 주소를 요구합니다. request_fulluri=true는 전체 대상 URI를 요청 라인에 넣습니다. 많은 포워드 프록시가 이를 요구합니다. 타임아웃은 해당 래퍼의 규칙에 따라 스트림 작업을 제한합니다.
본문을 파싱하기 전에 반환 값과 경고를 확인하십시오. 읽기 실패와 빈 성공 응답은 서로 다른 처리가 필요합니다. 이 하나의 HTTP 대상과 제한된 요청으로 진단을 시작하십시오. HTTPS는 터널링과 TLS 동작을 추가하므로 실제 래퍼/PHP 버전에서 확인해야 합니다. 이 예제는 그러한 기능을 입증하지 않습니다.
이 호출에서 컨텍스트를 전달하면 경로가 드러나고 관련 없는 URL 읽기를 바꾸지 않습니다. 공유 기본 컨텍스트는 애플리케이션이 의도적으로 그 정책을 원할 때만 적절합니다. 라이브러리는 그 넓은 범위를 고려해야 합니다.
이것은 PHP 스트림을 구성하는 것이지, 독립적으로 만든 cURL 핸들이나 브라우저, 다른 프로세스를 구성하는 것이 아닙니다. 패키지가 이 컨텍스트를 사용할 것이라 기대하기 전에 실제 HTTP 전송 방식을 확인하십시오.