问题描述
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
分配给IOHandler
的TransparentProxy
属性。