在域名上集群 ip 地址
Clustering ip-addresses on domain names
我有一个 ip 网络,它基本上是一个连续的 ip 地址列表。从这个列表中,我想将 ip 地址的范围聚集到独立的实体中。我想为范围内的每个 IP 提供一组属性,例如生存时间、名称服务器和与之关联的域名。
然后我想确定每个 IP 地址与其邻居之间的距离,并根据最短距离开始聚类。
我的问题是距离函数。 TTL 是一个数字,所以应该不是问题。名称服务器和域名是字符串,但是如何将它们表示为向量中的数字?
基本上,如果 2 个 IP 地址具有相同的名称服务器或非常相似的域名(等于 2LD),您希望它们的距离更小。我研究过类似 word2vec 的东西,但找不到有用的实现。
我会尝试像这样使用 difflib。
from difflib import SequenceMatcher
def similarity(a, b):
return SequenceMatcher(None, a, b).ratio()
然后您可以针对每组名称调用该函数以获得相似度分数并根据该分数对它们进行分组。
similarity("server1","server1")
1.0
similarity("Server1","Server2")
0.8571428571428571
similarity("foo","bar")
0.0
我有一个 ip 网络,它基本上是一个连续的 ip 地址列表。从这个列表中,我想将 ip 地址的范围聚集到独立的实体中。我想为范围内的每个 IP 提供一组属性,例如生存时间、名称服务器和与之关联的域名。
然后我想确定每个 IP 地址与其邻居之间的距离,并根据最短距离开始聚类。
我的问题是距离函数。 TTL 是一个数字,所以应该不是问题。名称服务器和域名是字符串,但是如何将它们表示为向量中的数字?
基本上,如果 2 个 IP 地址具有相同的名称服务器或非常相似的域名(等于 2LD),您希望它们的距离更小。我研究过类似 word2vec 的东西,但找不到有用的实现。
我会尝试像这样使用 difflib。
from difflib import SequenceMatcher
def similarity(a, b):
return SequenceMatcher(None, a, b).ratio()
然后您可以针对每组名称调用该函数以获得相似度分数并根据该分数对它们进行分组。
similarity("server1","server1")
1.0
similarity("Server1","Server2")
0.8571428571428571
similarity("foo","bar")
0.0