静态或动态ips

问题描述

| 我运行此网站,并批准人们访问该网站的一部分。我只想批准静态IP。如果我有一堆IP,如何确定它们是否是静态的?我可以做其余的部分,但是套接字库中可能有一些功能,或者可以让我编写该部分脚本以查找用户使用的是静态IP还是动态IP的功能。 谢谢 ! PHP / Js也可以。

解决方法

无法固有地判断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地址过滤访问是否可以提供所需的验证。,我会使用务实的解决方案:新帐户的试用期为几天。之后,他们只能从用于注册的同一IP登录。如果他们仍然拥有相同的IP,则很可能是静态的。,好吧,您没有问题,对吗?如果他们要求从IP X进行访问,则可以授予他们从IP X的访问权限。如果事实证明它是动态的并且可以切换,则他们将不再具有访问权限。实际上,没有来自动态IP的访问:) 严格来说,IP分配类型的权限是用户要访问的主机。因此,您需要询问用户在他/她的配置中说了什么。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...