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 を接続してください。

関連記事