0

再会,

请提供如何通过网络代理使用 idWHOIS 的示例?我想使用免费的网络代理匿名拨打 whois 电话。

为什么具有 ProxyParams 但没有 idWHOIS 的 idHTTP 组件如此简单?

我真的一无所知:)

看到我尝试的代码被剪断:

procedure TForm2.Button2Click(Sender: TObject);
var
  ProxyHTTP :TIdConnectThroughHttpProxy;
  Proxy :TIdCustomTransparentProxy;
begin
  ProxyHTTP := TIdConnectThroughHttpProxy.Create(Self);
  Proxy := TIdCustomTransparentProxy.Create(Self);
  Try

{    idIOHandler.TransparentProxy := Proxy;

    Proxy.Host := 'whois.ausregistry.net.au';
    Proxy.Port := StrToInt('43');
    Proxy.IPVersion := ID_DEFAULT_IP_VERSION;
//    Proxy.Connect(idIOHandler, edtProxy.Text, StrToInt(edtPort.Text), ID_DEFAULT_IP_VERSION);
//    Proxy.Enabled;

    Proxy.ChainedProxy := ProxyHTTP;
 }

    idIOHandler.TransparentProxy := ProxyHTTP;
    ProxyHTTP.Host := edtProxy.Text;
    ProxyHTTP.Port :=  StrToInt(edtPort.Text);
    ProxyHTTP.IPVersion := ID_DEFAULT_IP_VERSION;
    ProxyHTTP.OnStatus := ProxyHTTPOnStatus;
    ProxyHTTP.Enabled;
    ProxyHTTP.Connect(idIOHandler, edtProxy.Text, StrToInt(edtPort.Text), ID_DEFAULT_IP_VERSION);

    Memo1.Clear;
    Memo1.Update;
    Memo1.Lines.Text := idWhois.WhoIs(edtDomain.Text + '.com.au');
  Finally
    idIOHandler.Close;
    idWhois.Disconnect;
    Proxy.Free;
    ProxyHTTP := TIdConnectThroughHttpProxy.Create(Self);
  End;
end;
4

1 回答 1

0

首先 - 你使用 whois 还是 http 协议?

  • 有本地 whois 服务通过其本地协议工作。
  • 还有 WWW 前端,可以让您在 MSIE(Microsoft Internet Explorer)等 WWW 浏览器中发出 whois 请求和查看结果。

显然,您应该能够通过 HTTP 代理连接到后者。 这里的 WWW 是几种相关技术一起使用的绰号:HTTP + SSL/TLS + WebDAV + HTML + CSS + JS 等。因此,HTTP 代理可能被认为是 HTTP 的子集,它是 WWW 的子集, 并且无法连接到前者, 因为 whois 不是 WWW blob 的一部分。

同样的事情也适用于电子邮件,它也超出了 WWW 领域:

  • 有邮件程序,通过IMAP/POP/SMTP协议和对应端口直接连接,
  • 还有像 Yahoo 和 GMail 这样的 WWW 前端允许通过 MSIE 查看邮件。WWW 访问通过 HTTP 代理工作,直接访问不是 HTTP 并且不起作用。

例外:一些代理允许 pin-holling。这被视为安全漏洞和错误配置,但有时可以通过 HTTP/SSL 支持命令 CONNECT。但通常不可能连接到每个端口,而只能连接到 :80 和 :443 端口。whois 协议很少出现在这些端口上,只有 HTTP 或 HTTPS 协议。一些服务器,如 Jabber、ICQ、GTalk 等许多 Messenger 或 Skype 超级节点,故意滥用这些端口:80 和:443 来提供其非 HTTP 协议,从而帮助这些程序欺骗 HTTP 代理并绕过 NAT 隔离. 但我认为你几乎找不到很多 whois 服务器这样做

无论谁,如果您发现配置不当的代理或此类特殊配置的 whois 服务器,您将有机会使用它。否则,您将只能通过现有的 WWW 前端对 whois 服务器使用 idHTTP。大多数 DNS 名称注册商都提供它们,因此用户无需使用特殊工具而只需使用 WWW 浏览器即可检查数据。

谷歌“http proxy ssl connect pinholling”了解更多关于使用 HTTP 代理的细节。谷歌“NAT Traversal”和“Proxy Tunelling”以获得更一般的概念。有时 VPN 技术被 [mis-] 用于在外部建立隧道。

PS。这并不能回答“我该怎么做”——没有 100% 可靠的方法——但希望能回答“为什么使用具有 ProxyParams 但没有 idWHOIS 的 idHTTP 组件如此简单?”。

如果通过 HTTP 代理向我们发送 idSMTP 或其他电子邮件组件,我想您会遇到同样的障碍。

聚苯乙烯。还有更通用的代理 - Socks 代理 - 应该允许转发任何 TCP 类协议。但它们是非常稀有的东西。

于 2012-08-23T11:44:47.117 回答