如何将 TIdWhois 与 SOCKS 代理一起使用

问题描述

我正在使用此代码获取 whois 信息:

IdWhois1.Host := 'whois.nic.tld';
ServerResultStr := IdWhois1.WhoIs('google.tld');

但我需要使用 SOCKS 代理服务器查询 whois 服务器(端口 43)。

我使用的是 Delphi 10.3.3。有没有办法通过使用 TIdWhois 来实现这一点?

解决方法

SOCKS 在 Indy 中使用 TIdSocksInfo 组件处理。您可以根据需要使用代理详细信息(主机、端口、版本、身份验证等)对其进行配置。

要使 TIdWhois(或任何 TCP 客户端)通过 TIdSocksInfo 连接到其目标服务器,您需要执行以下操作:

  • TIdIOHandlerSocket 派生组件(TIdIOHandlerStack,或任何 TIdSSLIOHandlerSocketBase 派生组件,如 TIdSSLIOHandlerSocketOpenSSL)分配给 TIdWhois.IOHandler 属性。

  • TIdSocksInfo 分配给 IOHandlerTransparentProxy 属性。