ip2位置:获取属于某个域的所有ip


ip2location: get all ip(s) belonged to a domain

我想让所有的ip都属于一个域,例如google.com,我最近看到了这个,https://github.com/ip2location/ip2location-cakephp.所以,我要做的是这样的:

<?php
// clientIp() will iterate from 1.1.1.1 to 255.255.255.255
App::uses('IP2LocationCore', 'IP2Location.Model');
$IP2Location = new IP2LocationCore();
$record = $IP2Location->get($this->request->clientIp());
if(strcmp($record->domainName, 'google.com')) {
// log the ip to a text file
}
?>

我的问题是:这个解决方案可行吗?,还有比这更好的吗?

我不太喜欢PHP,所以在回复中要考虑一下!

看来ip2location所做的就是获取一个IP地址,并给你它的位置。它通过从各种数据源中汇编信息来做到这一点(我想)。

然而,你需要从一个IP地址开始,它会给你一个与之相关的反向域。这很可能与前瞻性查找地址不同。

例如,我有一个主机名vm.example.com,用于指向Azure上的远程桌面会话。如果你在该地址上进行反向查找,你不会得到我的域的任何信息,你会得到Azure域,因为反向就是在那里注册的。

据我所知,除非启用区域传输,否则无法获取域中的所有主机名。至少在整个域中都是递增的。

你想这么做有什么具体的原因吗?

尝试使用PHP函数gethostbyname。

<?php
$hosts = gethostbynamel('google.com');
print_r($hosts);
?>

例如,这将返回:

Array
(
    [0] => 173.194.113.35
    [1] => 173.194.113.41
    [2] => 173.194.113.46
    [3] => 173.194.113.34
    [4] => 173.194.113.40
    [5] => 173.194.113.39
    [6] => 173.194.113.33
    [7] => 173.194.113.37
    [8] => 173.194.113.32
    [9] => 173.194.113.38
    [10] => 173.194.113.36
)