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 전송 방식을 확인하십시오.

관련 글