【发布时间】:2012-08-23 10:24:41
【问题描述】:
早安,
请举例说明如何通过网络代理使用 idWHOIS? 我想使用免费的网络代理匿名拨打 whois 电话。
为什么 idHTTP 组件具有 ProxyParams 而没有 idWHOIS 却如此简单?
我真的一无所知:)
查看我尝试的代码片段:
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;
【问题讨论】:
-
您很难获得一个网络代理来与 whois 协议通信。无论如何,这听起来像是虐待行为。许多
whois服务器每天只允许有限数量的查询是有原因的。 -
但大多数注册商都拥有 WHOIS 数据库的 HTTP 前端。 OTOH 喜欢混淆数据,例如显示图片而不是文本,以防止垃圾邮件收集者使用 whois 数据库。
-
重新标记:这个问题不是 Delphi 特有的。它涉及一般 Internet 概念,例如端口和协议,以及特定 HTTP 协议功能(HTTP 代理)。
-
whois(RFC3912) 在 TCP 之上运行,而不是在 HTTP 之上。因此那里没有代理的概念,您不应该使用 HTTP 库来进行 whois 查询。