Whois Server在2或3个查询后阻止我的IP地址

时间:2013-04-12 08:50:39

标签: whois

我正在为网站编写域名检查程序,但我面临着有趣的问题。

一些负责域名的whois服务器,如.WS(whois.worldsite.ws)或.CA(whois.cira.ca)每天2或3次查询后阻止ip地址!!!

对于每天可能有数百万请求的托管网站来说,这看起来像灾难。

我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:11)

相反,有一种非常简单的方法。

如前所述,如果他们认为您在24小时内提出了太多请求,那么大多数whois权限会限制(甚至阻止)您的流量,相反,您可能需要考虑登录到任何一个的ftp站点全世界的whois提供者并下载数据库的各个部分,然后编写(或查找)自己的脚本来处理它们。

我目前使用自己的一台服务器执行此操作,该服务器使用以下shell脚本连接(每24小时一次):

#!/bin/bash
rm -f delegated-afrinic-latest
rm -f delegated-lacnic-latest
rm -f delegated-arin-latest
rm -f delegated-apnic-latest
rm -f delegated-ripencc-latest
rm -f ripe.db.inetnum
rm -f apnic.db.inetnum
rm -f ripe.db.inetnum.gz
rm -f apnic.db.inetnum.gz
wget ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
wget ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
wget ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
wget ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
wget ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest
wget ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz
ftp -n -v ftp.apnic.net <<END
user anonymous anonymous@anonymous.org
binary
passive
get /apnic/whois-data/APNIC/split/apnic.db.inetnum.gz apnic.db.inetnum.gz
bye
END
gunzip ripe.db.inetnum
gunzip apnic.db.inetnum

然后我有一个自定义编写的程序,将文件解析为一个自定义数据库结构,然后我的服务器从中进行查询。

由于所有服务器都互相镜像数据,因此您应该能够从一台服务器获取完整的数据集,但如果没有,那么修改上述shell脚本以从中下载数据并不需要太多时间。其他服务器,所有这些都响应'ftp。????'并具有相同的通用文件夹结构。

我无法帮助你使用解析器,因为它包含专有代码,但文件格式(特别是如果你得到拆分文件)与你在典型的whois输出中看到的相同,所以它很容易使用

google-code上有一个解析器(我在那里得到了下载脚本)名为'ip-country'(我认为)它的设计允许你构建自己的whois数据库,我建的是稍微的因为它与其他数据的结合也更复杂(因此为什么我的解析器是专有的)

通过下载和处理您自己的数据,您可以解决提供商施加的任何限制,结果是查询您自己的数据存储的速度最快,而不是将服务器的请求发送到查询每次有人输入IP地址时都会使用服务器。

答案 1 :(得分:1)

这没有简单的方法。您发现的一些whois服务器在经过几次查询后阻止了您。您通常可以为一定数量的查询支付费用。 还有另一种方法可行。由于阻塞是通过IP地址完成的,因此您可以编写一个运行查询的Java小程序。这样,限制将在用户上,因此用户将被限制为每天2-3次查询而不是网站。 必须对Java Applet进行签名才能允许网络访问。我在java中编写了一个可能有帮助的whois库JFreeWhois

答案 2 :(得分:0)

您应该知道错误消息模式,并尝试在一些睡眠后重复查询。如果它不起作用,那么使用不同的Whois服务器。当您为网站编写应用程序时,Whois查询应该从客户端完成。