Got의 agent 객체는 대상 프로토콜을 키로 씁니다. 따라서 HTTPS URL용 SOCKS 연결은 socks라는 새 키가 아니라 https 아래에 들어갑니다.

HTTP/1 경로에서 Got과 socks-proxy-agent를 쓰는 기존 ESM 애플리케이션이라면:

import got from 'got';
import {SocksProxyAgent} from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const body = await got('https://www.example.org/', {
  http2: false,
  agent: {
    http: agent,
    https: agent,
  },
  timeout: {request: 20000},
}).text();

SOCKS5 프록시 목록에서 예제의 계정 없는 프록시 URL 후보를 얻을 수 있습니다. 같은 에이전트로 표시된 HTTP와 HTTPS 항목을 모두 처리할 수 있습니다. SOCKS 연결을 맺은 뒤 HTTPS 경로가 대상과 TLS 핸드셰이크를 수행합니다.

이 에이전트에서 socks5h은 대상 호스트 이름 확인을 SOCKS 프록시에 맡깁니다. socks5은 대신 로컬 확인을 선택합니다. 프록시 자체의 호스트 이름은 여전히 Node 프로세스에서 접근할 수 있어야 합니다.

Got의 HTTP/2 에이전트 슬롯은 다른 인터페이스를 기대합니다. 이 에이전트를 agent.http2에 복사하고 HTTP/2 프록시 지원을 제공한다고 가정하지 마세요.

구성한 에이전트를 워크로드에 재사용하고 소유자가 종료될 때 파기하세요. 패키지 버전은 애플리케이션의 Node 런타임에 맞추세요. 이 예제는 이름이 지정된 SocksProxyAgent 내보내기를 사용합니다.

관련 글