Guzzle 클라이언트의 핸들러를 의도적으로 고를 때 cURL 기반 스택은 SOCKS를 사용할 수 있습니다:

$stack = \GuzzleHttp\HandlerStack::create(
    new \GuzzleHttp\Handler\CurlHandler()
);

$client = new \GuzzleHttp\Client([
    'handler' => $stack,
    'proxy' => 'socks5h://proxy.example.net:1080',
]);

socks5h 은(는) 프록시에 대상 이름 확인을 요청합니다. Guzzle은 엔드포인트를 libcurl에 넘기므로 로드된 libcurl 빌드가 그 프로토콜을 지원해야 합니다. SOCKS5 프록시 목록은 클라이언트 프록시 URL에 쓸 공개 엔드포인트 후보를 제공합니다.

애플리케이션에 이미 핸들러 스택이 있다면 교체하여 미들웨어를 잃기 전에 그 아래의 전송을 확인하세요. PHP HTTP 스트림으로 제한된 핸들러는 클라이언트가 이 옵션을 받는다는 이유만으로 SOCKS를 구현할 수 없습니다.

요청을 수행하는 프로세스를 확인하세요. CLI PHP와 PHP-FPM은 서로 다른 설정 파일과 확장을 로드할 수 있으며, 한쪽에 cURL이 있다고 다른 쪽에서 사용 가능한 것은 아닙니다.

관련 글