0

私はTIdHTTP自分のアプリケーションで多くのことを使用しており、私のユーザーは特定のタイムアウトで Socks4/5 機能を要求しました。私は自分のアプリケーションを使用して SSL Web サイトと通信していますが、ProxyParams以前は通常の Web サイトでしか作業していませんでした。TIdHTTP特定のタイムアウトを使用してコンポーネントに Socks4 および/または Socks5 のサポートを追加するにはどうすればよいですか?

編集:

私は Socks4/Socks5 プロキシを持っていないので、テスト用の新しいアプリケーションで独自のプロキシを作成しました。を追加TIdSocksServerして割り当てましTIdServerIOHandlerSSLOpenSSLた。接続を確認するために、にメッセージボックスを追加しましたOnConnect。サーバーはポート 8080 でリッスンし、次のように設定されています。Active:=True;

TIdHTTPコンポーネントを使用するコードは次のとおりです。

procedure NewQuery;
var
 IDHTTP                                : TIdHTTP;
 SSL                                   : TIdSSLIOHandlerSocketOpenSSL;
 Socks                                 : TIdSocksInfo;
begin
 Socks                                 := TidSocksInfo.Create (NIL);
 IDHTTP                                := TIdHTTP.Create(NIL);
 SSL                                   := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
 IDHTTP.IOHandler                      := SSL;
 SSL.TransparentProxy                  := Socks;
 Socks.Host                            := 'localhost';
 Socks.Port                            := 8080;
 Socks.Authentication                  := saNoAuthentication;
 Socks.Version                         := svSocks4; // or svSocks5
 IDHTTP.ConnectTimeout                 := 5000; // 5 seconds
 IDHTTP.Get ('www.google.com');
end;

これを正しい方法で使用したかどうかはわかりませんが、GET リクエストはソックス サーバーに接続しなくても機能するようです。私はそれを間違って使用していますか?

4

1 に答える 1

2

TIdSocksInfoコンポーネントを IOHandler のTransparentProxyプロパティに割り当てます。

于 2013-09-12T15:17:17.000 に答える