我正在检查成熟的ncc db中是否存在IP地址的国家/地区代码,以防止某些国家/地区的注册。
/**
* Get country code from Ip.
* @input IP number
* @output Country Code.
*/
function parse_ip($ip){
$DATABASE = "whois.ripe.net";
$info = '' ;
$sk= @fsockopen($DATABASE, 43, $errno, $errstr, 1) or error_log('Unable to connect to whois server');
if(!empty($sk)){
@fputs ($sk, $ip ."\r\n") or error_log ('Unable to send data to whois server in act_functions.inc from parse_ip()');
while (!feof($sk)){
$info.= fgets ($sk, 2048);
}
preg_match( '/^\x20*country\x20*:\x20*(\w{2})/im',$info, $country_code);
return $country_code[1];
}
else return false;
}
有些地址似乎不受它们管理,这怎么可能?
inetnum: 135.197.0.0 - 136.142.255.255
netname: NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK
descr: IPv4 address block not managed by the RIPE NCC
如果该区块未被管理,我该如何实施替代方案?
答案 0 :(得分:0)
RIPE数据库未提供由另一个区域Internet注册表(RIR)(在本例中为ARIN)管理的IP地址的详细信息。您可以尝试使用whois.iana.org
作为WHOIS来源来找出相应的RIR(并执行第二次WHOIS查找,这次是对RIR的查找)。但是请记住,您当前正在解析的country
属性是not reliable at RIPE,因为„从未指定该国家代表什么。它可以是跨国公司总部的位置,也可以是服务器中心所在的位置,也可以是最终用户的家。因此,它不能以任何可靠的方式用于将IP地址映射到国家/地区。另一方面,如果您正在寻找IP地理位置,则使用现有的和维护的地理位置数据库而不是重新设计轮子可能会有所帮助,因为WHOIS服务也有查找限制。