TIdHTTP의 SOCKS 경로를 IOHandler로 통과시키기
TIdHTTP가 사용하는 Indy 10 IOHandler에 SOCKS 설정을 붙이고, HTTP 대상은 요청에 그대로 둡니다.
Indy 10에서 TIdHTTP를 IOHandler를 통해 SOCKS 프록시에 연결합니다. 폼에 이미 Http, SocketHandler, Socks 컴포넌트가 있다고 가정합니다:
Http.IOHandler := SocketHandler;
SocketHandler.TransparentProxy := Socks;
Socks.Host := 'proxy.example';
Socks.Port := 1080;
Socks.Version := svSocks5;
Page := Http.Get('http://example.com/');
여기서 SocketHandler는 TIdIOHandlerStack이고 Socks는 TIdSocksInfo입니다. 요청 전에 컴포넌트를 구성하세요. 프록시 자격 증명이 설정되지 않은 이 공개 사이트 예제에서는 SOCKS5 프록시 목록에서 SOCKS5 후보를 고르고, 아래 설명대로 오래된 HTTP 프록시 경로는 비워 둡니다. SOCKS 버전 선택이 중요한 이유는 기본값이 svNoSocks이기 때문입니다.
TIdHTTP의 ProxyParams는 HTTP 프록시를 구성합니다. SOCKS 전용 경로는 대신 TransparentProxy에 속합니다. 거기에 HTTP 프록시도 남겨 두면 SOCKS 연결 외에 또 다른 중개자를 설명하게 될 수 있으므로, 의도한 경로의 일부가 아니면 오래된 HTTP 프록시 구성을 지우세요.
SOCKS5 사용자 이름/암호 인증의 경우 Socks.Authentication를 saUsernamePassword로 설정하고 사용자 이름과 암호를 제공합니다. SSL 지원 IOHandler는 TLS 역할을 유지해야 합니다. 단순 핸들러로 교체하지 말고 상속된 프록시 인터페이스에 SOCKS를 붙이세요.