【问题标题】:How to use proxies with Indy TIdWhois?如何在 Indy TIdWhois 中使用代理?
【发布时间】:2017-03-30 05:52:30
【问题描述】:

我不知道如何在TIdWhois 中使用代理。有人知道吗?

按照 Remy 的描述,我使用以下代码:

w:=TIdWhois.Create(nil);
p:=TIdConnectThroughHttpProxy.Create(nil);
io:=TIdIOHandlerStack.Create(nil);
p.Host:=<proxy-ip>
p.port:=<proxy-port>
io.TransparentProxy:=p;
w.io:=io;
w.host:=<whois-server>
w.port:=43;
w.WHoIs(<domain>);

监控端口,它仍然使用我的真实 IP 进行请求。

我做错了什么?

【问题讨论】:

标签: delphi indy indy10 delphi-10.2-tokyo


【解决方案1】:

Indy 10 原生支持两种类型的代理:

  • HTTP,通过 TIdConnectThroughHttpProxy 组件。

  • SOCKS 4/4a/5,通过TIdSocksInfo 组件。

要使用其中任何一个,您需要:

  1. 分配一个 TIdIOHandlerSocket-派生组件,如TIdIOHandlerStack,到 客户的IOHandler 属性。

  2. 将所需的代理组件分配给TIdIOHandlerSocket.TransparentProxy 属性,将其HostPort 属性设置为所需代理服务器的主机/端口,并相应地启用它(通过TIdConnectThroughHttpProxy.EnabledTIdSocksInfo.Version 属性)。

  3. 设置客户端的HostPort属性到目标服务器的Host/Port,然后Connect()就可以正常使用客户端了。

【讨论】:

  • 我更新了我的问题,添加了一个符合您描述的示例,但它对我不起作用。
  • @Softtouch 您没有将TIdConnectThroughHttpProxy.Enabled 属性设置为true。我已经更新了我的答案。
  • 谢谢。我尝试将启用设置为true,也没有工作。但是当我使用 TIdConnectThroughHttpProxy.create(w) 而不是 TIdConnectThroughHttpProxy.create(nil) 时它起作用了,对于 TIdIOHandlerStack.Create 也是如此。
  • @Softtouch 选择Owner 对组件的运行方式没有任何影响。它只控制内存管理,没有别的。如果你设置一个 nil Owner,请确保你在使用它之后Free() 组件..
  • 那我就没有头绪了。没有设置所有者,它对我不起作用。它只在我设置所有者时使用代理。
猜你喜欢
  • 2021-05-22
  • 2011-05-07
  • 1970-01-01
  • 2015-05-29
  • 2023-04-10
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多