我运行此网站,并批准访问网站的某个部分供人们使用。我只想批准静态ips。如果我有一堆IP,我怎么知道它们是否是静态的?我可以做剩下的部分,但是套接字库中可能有一些功能,或者让我编写部件脚本以查找用户是否使用静态或动态IP。
谢谢!
Php / Js也会奏效。
答案 0 :(得分:3)
无法确定IP地址是静态还是动态分配。根据IP解析的主机名,您可能会猜测它们是否是静态的,但没有任何明确的可以促进这一点。
您可以使用套接字模块将IP解析为主机名,并根据某种“最佳猜测”算法将它们标记为“静态”或“动态”,但这只是:最佳猜测。
以下是使用随机Verizon FiOS IP地址的示例。这假设任何以“pool”开头的IP都是动态分配的。
>>> hostname = socket.gethostbyaddr('71.243.222.111')[0]
>>> if 'pool' in hostname:
... print hostname, 'is dynamic'
...
pool-71-243-222-111.lsanca.fios.verizon.net is dynamic
您将很难确定所有各种命名约定,但这绝不是一个完整的解决方案。
您可能想问自己,您首先尝试解决的是什么类型的问题,以及通过IP地址过滤访问是否提供了您需要的验证。
答案 1 :(得分:0)
我会使用实用的解决方案:新帐户有几天的试用阶段。之后,他们只能从用于注册的相同IP登录。如果他们仍拥有相同的IP,则很可能是静态的。
答案 2 :(得分:0)
嗯,你没有问题,是吗?如果他们要求从IP X进行访问,您可以从IP X进行访问。如果事实证明它是动态的并且他们切换,则他们不再具有访问权限。在实践中,无法从动态IP访问:)
严重的是,IP分配类型的权限是用户访问的主机。因此,您需要询问用户在其配置中的内容。