我想要所有的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
}
?>我的问题是:这个解决方案可行吗?而且无论如何都比这个更好?
发布于 2016-01-08 18:21:44
我不太喜欢PHP,所以请在我的回复中考虑这一点!
看起来ip2location所做的就是获取一个IP地址,并告诉你它的位置。它(我想)是通过从各种数据源编译信息来做到这一点的。
但是,您需要从IP地址开始,它将为您提供与该地址相关联的反向域名。这很可能与正向查找地址不同。
例如,我有一个主机名vm.example.com,用于指向Azure上的远程桌面会话。如果你在该地址上进行反向查找,你将无法获得关于我的域的任何信息,你将获得Azure域,因为这是反向注册的地方。
据我所知,除非启用区域传输,否则无法获取域中的所有主机名。至少不是在整个域中递增的情况下。
你想这么做有什么特别的原因吗?
发布于 2016-01-08 18:07:06
尝试使用PHP函数gethostbynamel。
<?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
)https://stackoverflow.com/questions/34673250
复制相似问题