Node의 HTTPS 클라이언트와 함께 SOCKS 에이전트 사용
socks-proxy-agent를 Node 코어 HTTPS 요청에 연결하고 Node 에이전트와 fetch 디스패처의 구분을 유지합니다.
SOCKS를 지원하는 에이전트는 Node 코어 HTTPS 클라이언트의 목적지 연결을 설정할 수 있습니다. 애플리케이션에 socks-proxy-agent가 있으면:
const https = require('node:https');
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const request = https.get('https://www.example.com/', {
agent,
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
이 공개 HTTPS 요청에는 예제 엔드포인트를 SOCKS5 프록시 목록의 인증되지 않은 후보로 바꿉니다. 콜백은 상태를 출력한 뒤 응답을 비웁니다. 애플리케이션이 필요하면 거기서 본문을 소비하세요. 에이전트는 할당된 작업에 재사용하고, 해당 클라이언트 정책이 폐기되어 작업이 끝나면 파괴합니다.
목적지 이름을 어디서 확인할지 선택
socks-proxy-agent의 URL 처리에서 socks5h는 목적지 호스트 이름 확인을 프록시 경로에 맡기고, socks5는 로컬에서 확인합니다. 이름이 프록시 네트워크에서만 사용 가능할 때 중요합니다.
HTTPS URL은 웹사이트의 정체성을 유지합니다. 에이전트는 Node가 해당 사이트로 TLS를 시작하기 전에 SOCKS 협상을 수행합니다.
사용자 이름/비밀번호 서비스의 경우 예약 문자에 대한 URI 구성 요소 인코딩을 사용해 프록시 URL에 자격 증명을 넣으세요. 전체 URL은 로그에 남기지 마세요. 목적지 Authorization 헤더는 웹사이트 계정에 속합니다.
이 에이전트는 Node 코어 HTTP/HTTPS 요청 API와 작동합니다. Node의 fetch는 디스패처 인터페이스를 사용하므로 해당 클라이언트가 지원하는 SOCKS 통합은 별도로 구성하세요.