概述
Alexa域名数据
Alexa是一家专门发布网站世界排名的网站,它所包含的数据集里面包含了多达几十亿的网址链接,且进行了排名。事实上,因为Alexa关注的是用户安装其插件后的访问数据,仅是因为没有更好的数据集的情况下,Alexa域名数据具有了一定的权威性。
1,使用朴素贝叶斯算法挖掘DGA域名
# -*- coding:utf-8 -*-
import sys
import urllib
import urlparse
import re
from hmmlearn import hmm
import numpy as np
from sklearn.externals import joblib
import HTMLParser
import nltk
import csv
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import os
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.naive_bayes import GaussianNB
#处理域名的最小长度
MIN_LEN=10
#状态个数
N=8
#最大似然概率阈值
T=-50
#模型文件名
FILE_MODEL="9-2.m"
#加载alexa数据文件,格式为csv格式
def load_alexa(filename):
domain_list=[]
csv_reader = csv.reader(open(filename))
for row in csv_reader:
domain=row[1]
if len(domain)>= MIN_LEN:
domain_list.append(domain)
return domain_list
def domain2ver(domain):
ver=[]
for i in range(0,len(domain)):
ver.append([ord(domain[i])])
return ver
#隐马尔可夫算法
def train_hmm(domain_list):
X = [[0]]
X_lens = [1]
for domain in domain_list:
ver=domain2ver(domain)
np_ver = np.array(ver)
X=np.concatenate([X,np_ver])#进行数组拼接
X_lens.append(len(np_ver))
remodel = hmm.GaussianHMM(n_components=N, covariance_type="full", n_iter=100)
remodel.fit(X,X_lens)
joblib.dump(remodel, FILE_MODEL)
return remodel
def load_dga(filename):
domain_list=[]
#xsxqeadsbgvpdke.co.uk,Domain used by Cryptolocker - Flashback DGA for 13 Apr 2017,2017-04-13,
# http://osint.bambenekconsulting.com/manual/cl.txt
with open(filename) as f:
for line in f:
domain=line.split(",")[0]
if len(domain)>= MIN_LEN:
domain_list.append(domain)
return domain_list
def test_dga(remodel,filename):
x=[]
y=[]
dga_cryptolocke_list = load_dga(filename)
for domain in dga_cryptolocke_list:
domain_ver=domain2ver(domain)
np_ver = np.array(domain_ver)
pro = remodel.score(np_ver)
#print "SCORE:(%d) DOMAIN:(%s) " % (pro, domain)
x.append(len(domain))
y.append(pro)
return x,y
def test_alexa(remodel,filename):
x=[]
y=[]
alexa_list = load_alexa(filename)
for domain in alexa_list:
domain_ver=domain2ver(domain)
np_ver = np.array(domain_ver)
pro = remodel.score(np_ver)
#print "SCORE:(%d) DOMAIN:(%s) " % (pro, domain)
x.append(len(domain))
y.append(pro)
return x, y
def show_hmm():
domain_list = load_alexa("/Users/zhanglipeng/Desktop/Data/top-1000.csv")
if not os.path.exists(FILE_MODEL):
remodel=train_hmm(domain_list)
remodel=joblib.load(FILE_MODEL)
x_3,y_3=test_dga(remodel, "/Users/zhanglipeng/Desktop/Data/dga-post-tovar-goz-1000.txt")
x_2,y_2=test_dga(remodel,"/Users/zhanglipeng/Desktop/Data/dga-cryptolocke-1000.txt")
x_1,y_1=test_alexa(remodel, "/Users/zhanglipeng/Desktop/Data/test-top-1000.csv")
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('HMM Score')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
def get_aeiou(domain_list):
x=[]
y=[]
for domain in domain_list:
x.append(len(domain))
count=len(re.findall(r'[aeiou]',domain.lower()))
count=(0.0+count)/len(domain)
y.append(count)
return x,y
def show_aeiou():
x1_domain_list = load_alexa("/Users/zhanglipeng/Desktop/Data/top-1000.csv")
x_1,y_1=get_aeiou(x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_aeiou(x2_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_aeiou(x3_domain_list)
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('AEIOU Score')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
def get_uniq_char_num(domain_list):
x=[]
y=[]
for domain in domain_list:
x.append(len(domain))
count=len(set(domain))
count=(0.0+count)/len(domain)
y.append(count)
return x,y
def show_uniq_char_num():
x1_domain_list = load_alexa("/Users/zhanglipeng/Desktop/Data/top-1000.csv")
x_1,y_1=get_uniq_char_num(x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_uniq_char_num(x2_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_uniq_char_num(x3_domain_list)
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('UNIQ CHAR NUMBER')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
def count2string_jarccard_index(a,b):
x=set(' '+a[0])
y=set(' '+b[0])
for i in range(0,len(a)-1):
x.add(a[i]+a[i+1])
x.add(a[len(a)-1]+' ')
for i in range(0,len(b)-1):
y.add(b[i]+b[i+1])
y.add(b[len(b)-1]+' ')
return (0.0+len(x-y))/len(x|y)
def get_jarccard_index(a_list,b_list):
x=[]
y=[]
for a in a_list:
j=0.0
for b in b_list:
j+=count2string_jarccard_index(a,b)
x.append(len(a))
y.append(j/len(b_list))
return x,y
def show_jarccard_index():
x1_domain_list = load_alexa("/Users/zhanglipeng/Desktop/Data/top-1000.csv")
x_1,y_1=get_jarccard_index(x1_domain_list,x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_jarccard_index(x2_domain_list,x1_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_jarccard_index(x3_domain_list,x1_domain_list)
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('JARCCARD INDEX')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='lower right')
plt.show()
def nb_dga():
x1_domain_list = load_alexa("/Users/zhanglipeng/Desktop/Data/top-1000.csv")
x2_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-cryptolocke-1000.txt")
x3_domain_list = load_dga("/Users/zhanglipeng/Desktop/Data/dga-post-tovar-goz-1000.txt")
x_domain_list=np.concatenate((x1_domain_list, x2_domain_list,x3_domain_list))
y1=[0]*len(x1_domain_list)
y2=[1]*len(x2_domain_list)
y3=[2]*len(x3_domain_list)
y=np.concatenate((y1, y2,y3))
cv = CountVectorizer(ngram_range=(2, 2), decode_error="ignore",
token_pattern=r"w", min_df=1)
x= cv.fit_transform(x_domain_list).toarray()
clf = GaussianNB()
print cross_val_score(clf, x, y, n_jobs=-1, cv=3)
if __name__ == '__main__':
nb_dga()
[0.94636872 0.93161435 0.93834081]
2.使用支持向量机算法区分僵尸网络DGA家族
# -*- coding:utf-8 -*-
import sys
import urllib
import urlparse
import re
from hmmlearn import hmm
import numpy as np
from sklearn.externals import joblib
import HTMLParser
import nltk
import csv
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import os
#处理域名的最小长度
MIN_LEN=10
#状态个数
N=8
#最大似然概率阈值
T=-50
#模型文件名
FILE_MODEL="9-2.m"
def load_alexa(filename):
domain_list=[]
csv_reader = csv.reader(open(filename))
for row in csv_reader:
domain=row[1]
if len(domain) >= MIN_LEN:
domain_list.append(domain)
return domain_list
def domain2ver(domain):
ver=[]
for i in range(0,len(domain)):
ver.append([ord(domain[i])])
return ver
def train_hmm(domain_list):
X = [[0]]
X_lens = [1]
for domain in domain_list:
ver=domain2ver(domain)
np_ver = np.array(ver)
X=np.concatenate([X,np_ver])
X_lens.append(len(np_ver))
remodel = hmm.GaussianHMM(n_components=N, covariance_type="full", n_iter=100)
remodel.fit(X,X_lens)
joblib.dump(remodel, FILE_MODEL)
return remodel
#从DGA文件中提取域名数据
def load_dga(filename):
domain_list=[]
#xsxqeadsbgvpdke.co.uk,Domain used by Cryptolocker - Flashback DGA for 13 Apr 2017,2017-04-13,
# http://osint.bambenekconsulting.com/manual/cl.txt
with open(filename) as f:
for line in f:
domain=line.split(",")[0]
if len(domain) >= MIN_LEN:
domain_list.append(domain)
return domain_list
def test_dga(remodel,filename):
x=[]
y=[]
dga_cryptolocke_list = load_dga(filename)
for domain in dga_cryptolocke_list:
domain_ver=domain2ver(domain)
np_ver = np.array(domain_ver)
pro = remodel.score(np_ver)
#print "SCORE:(%d) DOMAIN:(%s) " % (pro, domain)
x.append(len(domain))
y.append(pro)
return x,y
def test_alexa(remodel,filename):
x=[]
y=[]
alexa_list = load_alexa(filename)
for domain in alexa_list:
domain_ver=domain2ver(domain)
np_ver = np.array(domain_ver)
pro = remodel.score(np_ver)
#print "SCORE:(%d) DOMAIN:(%s) " % (pro, domain)
x.append(len(domain))
y.append(pro)
return x, y
def show_hmm():
domain_list = load_alexa("/Users/zhanglipeng/Data/top-1000.csv")
if not os.path.exists(FILE_MODEL):
remodel=train_hmm(domain_list)
remodel=joblib.load(FILE_MODEL)
x_3,y_3=test_dga(remodel, "/Users/zhanglipeng/Data/dga-post-tovar-goz-1000.txt")
x_2,y_2=test_dga(remodel,"/Users/zhanglipeng/Data/dga-cryptolocke-1000.txt")
x_1,y_1=test_alexa(remodel, "/Users/zhanglipeng/Data/test-top-1000.csv")
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('HMM Score')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
#针对正常域名元音字母比例较高,可以计算元音字母的比例,以进行区分
def get_aeiou(domain_list):
x=[]
y=[]
for domain in domain_list:
x.append(len(domain))
count=len(re.findall(r'[aeiou]',domain.lower()))
count=(0.0+count)/len(domain)
y.append(count)
return x,y
#三个家族的字母比例自然不会相同,这里进行获取和计算
def show_aeiou():
x1_domain_list = load_alexa("/Users/zhanglipeng/Data/top-1000.csv")
x_1,y_1=get_aeiou(x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_aeiou(x2_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_aeiou(x3_domain_list)
#以域名长度为横轴,元音字母比例作为纵轴
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('AEIOU Score')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
#计算去重后的字母数字个数与域名长度的比例,可以使用set数据结构。set数据结构不包含重复的值
def get_uniq_char_num(domain_list):
x=[]
y=[]
for domain in domain_list:
x.append(len(domain))
count=len(set(domain))
count=(0.0+count)/len(domain)
y.append(count)
return x,y
#分别获取僵尸网络和alexa域名数据,计算去重后的字母个数与域名长度的比例
def show_uniq_char_num():
x1_domain_list = load_alexa("/Users/zhanglipeng/Data/top-1000.csv")
x_1,y_1=get_uniq_char_num(x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_uniq_char_num(x2_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_uniq_char_num(x3_domain_list)
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('UNIQ CHAR NUMBER')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='best')
plt.show()
#jarccard系数定义为两个集合交集与并集元素个数的比值。
def count2string_jarccard_index(a,b):
x=set(' '+a[0])
y=set(' '+b[0])
for i in range(0,len(a)-1):
x.add(a[i]+a[i+1])
x.add(a[len(a)-1]+' ')
for i in range(0,len(b)-1):
y.add(b[i]+b[i+1])
y.add(b[len(b)-1]+' ')
return (0.0+len(x-y))/len(x|y)
#计算两个域名集合的平均jarccard
def get_jarccard_index(a_list,b_list):
x=[]
y=[]
for a in a_list:
j=0.0
for b in b_list:
j+=count2string_jarccard_index(a,b)
x.append(len(a))
y.append(j/len(b_list))
return x,y
#分别计算三个
def show_jarccard_index():
x1_domain_list = load_alexa("/Users/zhanglipeng/Data/top-1000.csv")
x_1,y_1=get_jarccard_index(x1_domain_list,x1_domain_list)
x2_domain_list = load_dga("/Users/zhanglipeng/Data/dga-cryptolocke-1000.txt")
x_2,y_2=get_jarccard_index(x2_domain_list,x1_domain_list)
x3_domain_list = load_dga("/Users/zhanglipeng/Data/dga-post-tovar-goz-1000.txt")
x_3,y_3=get_jarccard_index(x3_domain_list,x1_domain_list)
fig,ax=plt.subplots()
ax.set_xlabel('Domain Length')
ax.set_ylabel('JARCCARD INDEX')
ax.scatter(x_3,y_3,color='b',label="dga_post-tovar-goz",marker='o')
ax.scatter(x_2, y_2, color='g', label="dga_cryptolock",marker='v')
ax.scatter(x_1, y_1, color='r', label="alexa",marker='*')
ax.legend(loc='lower right')
plt.show()
if __name__ == '__main__':
#show_hmm()
#show_aeiou()
#show_uniq_char_num()
show_jarccard_index()
[0.76602756 0.85328533 0.86302193]
3.使用K-Means算法检测DGA域名
# -*- coding:utf-8 -*-
import sys
import re
import numpy as np
from sklearn.externals import joblib
import csv
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import os
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import cross_val_score
import os
from sklearn.naive_bayes import GaussianNB
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
#处理域名的最小长度
MIN_LEN=10
#随机程度
random_state = 170
def load_alexa(filename):
domain_list=[]
csv_reader = csv.reader(open(filename))
for row in csv_reader:
domain=row[1]
if domain >= MIN_LEN:
domain_list.append(domain)
return domain_list
def domain2ver(domain):
ver=[]
for i in range(0,len(domain)):
ver.append([ord(domain[i])])
return ver
def load_dga(filename):
domain_list=[]
#xsxqeadsbgvpdke.co.uk,Domain used by Cryptolocker - Flashback DGA for 13 Apr 2017,2017-04-13,
# http://osint.bambenekconsulting.com/manual/cl.txt
with open(filename) as f:
for line in f:
domain=line.split(",")[0]
if domain >= MIN_LEN:
domain_list.append(domain)
return domain_list
#加载白样本和其他两个DGA家族的样本,分别进行标记。
def nb_dga():
x1_domain_list = load_alexa("/Users/zhanglipeng/Data/top-1000.csv")
x2_domain_list = load_dga("/Users/zhanglipeng/Data/dga-cryptolocke-1000.txt")
x3_domain_list = load_dga("/Users/zhanglipeng/Data/dga-post-tovar-goz-1000.txt")
x_domain_list=np.concatenate((x1_domain_list, x2_domain_list,x3_domain_list))
y1=[0]*len(x1_domain_list)
y2=[1]*len(x2_domain_list)
y3=[2]*len(x3_domain_list)
y=np.concatenate((y1, y2,y3))
print x_domain_list
#对域名进行分割,将2-gram结果作为词汇表进行映射,得到对应的特征化向量x
cv = CountVectorizer(ngram_range=(2, 2), decode_error="ignore",
token_pattern=r"w", min_df=1)
x= cv.fit_transform(x_domain_list).toarray()
clf = GaussianNB()
print cross_val_score(clf, x, y, n_jobs=-1, cv=3)
def kmeans_dga():
x1_domain_list = load_alexa("/Users/zhanglipeng/Data/dga/top-100.csv")
x2_domain_list = load_dga("/Users/zhanglipeng/Data/dga/dga-cryptolocke-50.txt")
x3_domain_list = load_dga("/Users/zhanglipeng/Data/dga/dga-post-tovar-goz-50.txt")
x_domain_list=np.concatenate((x1_domain_list, x2_domain_list,x3_domain_list))
#x_domain_list = np.concatenate((x1_domain_list, x2_domain_list))
y1=[0]*len(x1_domain_list)
y2=[1]*len(x2_domain_list)
y3=[1]*len(x3_domain_list)
y=np.concatenate((y1, y2,y3))
#y = np.concatenate((y1, y2))
#print x_domain_list
cv = CountVectorizer(ngram_range=(2, 2), decode_error="ignore",
token_pattern=r"w", min_df=1)
x= cv.fit_transform(x_domain_list).toarray()
#实例化K-Means算法,对样本进行训练
model=KMeans(n_clusters=2, random_state=random_state)
y_pred = model.fit_predict(x)
#print y_pred
#使用TSNE进行降维,这是目前最好的降维方法之一
tsne = TSNE(learning_rate=100)
x=tsne.fit_transform(x)
print x
print x_domain_list
#可视化操作
for i,label in enumerate(x):
#print label
x1,x2=x[i]
if y_pred[i] == 1:
plt.scatter(x1,x2,marker='o')
else:
plt.scatter(x1, x2,marker='x')
#plt.annotate(label,xy=(x1,x2),xytext=(x1,x2))
plt.show()
if __name__ == '__main__':
#nb_dga()
kmeans_dga()
[[-1.66236248e+01 6.83696976e+01]
[ 1.21828232e+01 -1.18292713e+01]
[-3.94314117e+01 -1.45719404e+01]
[-1.18690739e+01 -1.26800070e+01]
[ 5.53498268e+00 1.09335442e+01]
[-1.20855675e+01 -2.81700687e+01]
[-3.02946072e+01 -1.46609440e+01]
[-4.06564760e+00 7.13742142e+01]
[-6.31102371e+00 -9.23670959e+00]
[-2.69580212e+01 3.82988644e+00]
[-1.82963181e+01 -2.20952272e+00]
[ 1.50815620e+01 1.41719685e+01]
[-7.68169212e+00 7.68249512e+01]
[-1.41615076e+01 -1.78154449e+01]
[ 1.32874513e+00 -1.53247738e+01]
[-3.23929901e+01 -3.68203583e+01]
[-2.09027791e+00 -1.10388889e+01]
[ 1.35764408e+01 3.02404766e+01]
[-2.95900965e+00 8.24923992e+00]
[ 2.31565742e+01 -4.19116306e+00]
[ 1.13029754e+00 6.61563263e+01]
[-2.28641629e+00 -6.15308714e+00]
[-1.53512325e+01 5.74736900e+01]
[ 3.61164713e+00 -3.60910149e+01]
[ 3.69744205e+00 -2.32826805e+00]
[-1.55096912e+00 6.00284500e+01]
[ 2.67874599e+00 5.53550720e+01]
[ 2.60927105e+01 3.13166380e+00]
[-2.64295464e+01 7.34533997e+01]
[-1.33558865e+01 -3.18289909e+01]
[ 1.39253664e+01 -3.94810371e+01]
[-2.46164589e+01 6.07143860e+01]
[ 8.65902042e+00 -6.05965233e+00]
[-8.33205414e+00 -2.05615482e+01]
[-1.19804134e+01 6.34601891e-01]
[-3.31957936e+00 5.31785393e+01]
[-1.72133579e+01 -8.96303558e+00]
[-2.09219723e+01 1.22932043e+01]
[-7.48357534e+00 5.73342018e+01]
[-5.51105843e+01 -1.42678089e+01]
[-5.11256218e+01 -1.19103251e+01]
[ 2.49229050e+00 -8.15768051e+00]
[-1.47438419e+00 2.78546736e-02]
[ 2.96048813e+01 -5.80287695e+00]
[-2.77209592e+00 -2.23540421e+01]
[-6.06680727e+00 6.40668411e+01]
[-4.43292885e+01 -2.54838943e+01]
[ 1.40455112e+01 -2.45369778e+01]
[ 1.07966912e+00 -4.58756905e+01]
[-1.37379169e+00 2.49364491e+01]
[-3.44191475e+01 -4.22527695e+01]
[ 3.37700348e+01 6.20249748e+00]
[ 1.05207157e+01 -6.37662932e-02]
[ 3.17338638e+01 1.17279160e+00]
[-1.42583246e+01 7.36614075e+01]
[ 3.50034118e+00 -2.04016190e+01]
[-5.60044575e+00 -1.54648180e+01]
[-1.23696184e+01 2.30363197e+01]
[ 1.00279646e+01 -1.87422295e+01]
[ 1.36130466e+01 1.82244434e+01]
[-3.80326614e+01 -4.98577261e+00]
[-2.44956894e+01 -2.06210232e+01]
[-1.15988092e+01 -6.39363289e+00]
[-4.84743233e+01 -2.70772247e+01]
[-2.05245590e+01 -1.37892885e+01]
[ 1.90767727e+01 1.00479376e+00]
[ 2.88450260e+01 -3.89700165e+01]
[ 3.80027103e+00 5.21506357e+00]
[-2.11467705e+01 7.91452789e+01]
[ 3.35819092e+01 -4.27731934e+01]
[-2.27311134e+01 -2.89920616e+01]
[-1.89403801e+01 6.31325874e+01]
[-2.38494835e+01 -8.44834328e+00]
[-2.83373585e+01 -6.77103281e+00]
[-1.53101463e+01 7.99128571e+01]
[-3.78876648e+01 -3.57995262e+01]
[-3.23235321e+01 1.22218919e+00]
[-2.83157425e+01 -3.75993729e+01]
[ 6.39642477e+00 -1.27088032e+01]
[ 2.87394485e+01 -4.76597862e+01]
[-1.71318836e+01 -2.20712223e+01]
[ 1.78067551e+01 -7.14176893e+00]
[-7.88741529e-01 1.64249344e+01]
[ 4.97881508e+00 6.14137650e+01]
[-3.22618794e+00 -2.96776752e+01]
[ 4.70032692e+00 -2.73381805e+01]
[ 1.18604574e+01 6.55162764e+00]
[-2.07721272e+01 1.83881435e+01]
[ 2.05297070e+01 1.68911858e+01]
[-3.09530201e+01 8.17155685e+01]
[-1.23402319e+01 6.37999115e+01]
[-2.00880375e+01 7.30766602e+01]
[-2.26268597e+01 6.77767181e+01]
[-2.87376385e+01 6.67840729e+01]
[-6.69215584e+00 -3.16490698e+00]
[-4.32292976e+01 9.79288292e+00]
[ 4.58898582e+01 -4.97236109e+00]
[-5.12492752e+00 4.53935909e+00]
[-9.36373425e+00 6.96397629e+01]
[ 1.88314381e+01 2.11966896e+01]
[-2.08397560e+01 2.87878628e+01]
[ 2.28412552e+01 -3.50865211e+01]
[-7.77556229e+00 3.25656281e+01]
[ 3.09387074e+01 1.28589745e+01]
[ 3.56022339e+01 -1.19875727e+01]
[-4.23492012e+01 1.99273930e+01]
[ 2.44351959e+01 -1.93314247e+01]
[-3.25588188e+01 -2.41769562e+01]
[ 4.03757172e+01 -6.26112633e+01]
[ 4.81584549e+01 1.83228550e+01]
[ 2.79206963e+01 -1.21984062e+01]
[-1.65209329e+00 4.21075439e+01]
[-4.51334877e+01 3.63696003e+00]
[ 1.25011330e+01 4.28304405e+01]
[-1.88577175e+01 4.83910608e+00]
[ 2.56965160e+01 -2.71514091e+01]
[ 2.49887867e+01 3.26497116e+01]
[ 3.79164772e+01 2.00289383e+01]
[-7.29881363e+01 -2.02853146e+01]
[-3.59009285e+01 1.08173552e+01]
[ 4.46438408e+01 -1.42359743e+01]
[-4.59294739e+01 -5.75160942e+01]
[ 4.33419876e+01 -3.09175758e+01]
[ 7.83643494e+01 -1.98586960e+01]
[ 4.81172752e+01 7.58034611e+00]
[-4.39966812e+01 4.91200600e+01]
[-5.05918655e+01 1.33699274e+01]
[ 7.21125984e+00 2.34053097e+01]
[ 2.15263748e+01 -8.39892197e+01]
[ 2.21037865e+01 -4.47526932e+01]
[ 6.89077911e+01 2.15642776e+01]
[ 4.05583420e+01 2.58947492e+00]
[-1.70901909e+01 3.97131500e+01]
[-5.54373322e+01 7.45680094e-01]
[ 6.71867523e+01 -3.67617836e+01]
[-6.07897520e+00 -3.83026123e+01]
[ 5.06946335e+01 -3.82982025e+01]
[ 3.82524185e+01 4.11278458e+01]
[ 3.66499786e+01 -3.73481798e+00]
[-6.37543755e+01 -4.72491035e+01]
[-5.47496223e+01 2.54921169e+01]
[ 2.87457256e+01 2.34561024e+01]
[-3.02881184e+01 1.90011101e+01]
[ 2.35071640e+01 -5.29509277e+01]
[ 4.84338522e+00 3.49176865e+01]
[ 2.36830254e+01 9.15075302e+00]
[-4.30073509e+01 3.54741287e+01]
[-6.16861916e+01 1.12567663e+01]
[ 7.50909653e+01 -3.67186356e+01]
[-1.68138638e+01 -3.95055237e+01]
[ 8.32603455e+01 -4.56554794e+00]
[ 1.26159267e+01 -3.24723701e+01]
[ 3.03798923e+01 5.41921005e+01]
[ 5.16593018e+01 4.95049438e+01]
[-1.20999088e+01 8.32266045e+00]
[ 5.49223518e+01 3.76623268e+01]
[ 5.92924423e+01 1.22728376e+01]
[ 1.56666460e+01 -6.04922447e+01]
[-4.89561577e+01 -4.24906654e+01]
[ 4.28704910e+01 6.04299011e+01]
[ 3.92325478e+01 1.10496845e+01]
[ 1.25154333e+01 -7.24166107e+01]
[-9.87122536e+00 -4.79492645e+01]
[ 3.98960457e+01 -4.02112999e+01]
[ 3.85747299e+01 3.04956799e+01]
[-4.75323009e+00 -7.16177597e+01]
[-3.20933037e+01 -5.69381981e+01]
[ 3.13878918e+01 -5.66522408e+01]
[ 6.67143631e+01 2.85970777e-01]
[ 4.63273811e+01 -4.97863083e+01]
[-1.50765467e+01 -5.87168808e+01]
[ 5.50839767e+01 3.45265210e-01]
[-7.23908005e+01 2.22373753e+01]
[ 2.77298412e+01 -6.82056656e+01]
[-2.97484436e+01 4.12455864e+01]
[ 5.39301262e+01 -6.29917107e+01]
[ 5.43137245e+01 2.64661293e+01]
[ 5.54279938e+01 -1.06014996e+01]
[-1.37548518e+00 -5.74928856e+01]
[ 3.38999290e+01 -3.07924118e+01]
[ 2.17984219e+01 6.88666840e+01]
[ 5.83977318e+01 -4.91151314e+01]
[-2.39844875e+01 -6.94539566e+01]
[ 7.72400360e+01 1.04455109e+01]
[-5.88094215e+01 4.11254044e+01]
[ 6.63700790e+01 -1.44329090e+01]
[-3.22448044e+01 2.94800186e+01]
[ 3.68678284e+01 -2.15801525e+01]
[ 4.96611443e+01 -2.21465397e+01]
[-7.11698227e+01 -3.37564683e+00]
[-9.09748745e+00 1.52609148e+01]
[ 1.22392302e+01 -5.01106758e+01]
[ 1.92269592e+01 -1.37344427e+01]
[ 7.27099762e+01 3.56985855e+01]
[-2.30401745e+01 -4.86000595e+01]
[ 1.66465912e+01 5.47861595e+01]
[ 2.40745277e+01 4.35649071e+01]
[ 3.63433723e+01 -4.94074593e+01]
[-6.10844994e+01 -3.02707386e+01]
[ 5.93228874e+01 -2.66321793e+01]]
['google.com' 'youtube.com' 'facebook.com' 'baidu.com' 'wikipedia.org'
'yahoo.com' 'reddit.com' 'google.co.in' 'qq.com' 'twitter.com'
'taobao.com' 'amazon.com' 'google.co.jp' 'sohu.com' 'live.com'
'tmall.com' 'vk.com' 'instagram.com' 'sina.com.cn' '360.cn' 'google.de'
'jd.com' 'google.co.uk' 'linkedin.com' 'weibo.com' 'google.fr'
'google.ru' 'yandex.ru' 'google.com.br' 'yahoo.co.jp' 'netflix.com'
'google.com.hk' 't.co' 'imgur.com' 'hao123.com' 'google.it' 'ebay.com'
'pornhub.com' 'google.es' 'aliexpress.com' 'wordpress.com' 'msn.com'
'bing.com' 'ntd.tv' 'tumblr.com' 'google.ca' 'microsoft.com'
'livejasmin.com' 'stackoverflow.com' 'twitch.tv' 'detail.tmall.com'
'mail.ru' 'onclkds.com' 'ok.ru' 'google.com.mx' 'office.com' 'imdb.com'
'blogspot.com' 'github.com' 'amazon.co.jp' 'pinterest.com' 'xvideos.com'
'apple.com' 'microsoftonline.com' 'diply.com' 'tianya.cn' 'popads.net'
'wikia.com' 'google.com.tr' 'csdn.net' 'whatsapp.com' 'google.com.au'
'alipay.com' 'paypal.com' 'google.com.tw' 'service.tmall.com'
'xhamster.com' 'list.tmall.com' 'adobe.com' 'pixnet.net' 'soso.com'
'youth.cn' 'coccoc.com' 'google.pl' 'dropbox.com' 'txxx.com'
'bongacams.com' 'porn555.com' 'amazon.de' 'googleusercontent.com'
'google.co.th' 'google.com.sa' 'google.com.eg' 'google.com.pk' 'fc2.com'
'bbc.co.uk' 'craigslist.org' 'china.com' 'google.co.id' 'amazon.in'
'wwkahhnyqvxdfq.com' 'kpudegrfqeuadh.net' 'xraxhxvadmpgdn.biz'
'ldjhqijygqrudp.ru' 'yfoctantsymbmt.org' 'mxyfqyrashjxdv.co.uk'
'aaeatqvufpeedj.info' 'rnpwcfjkeiybhu.com' 'sbumbwpwqsbpie.net'
'sifucvrlqyqeot.biz' 'tvkkbnxxdjssgp.ru' 'tvtyoxjfglnydk.org'
'ujyonpprsvpneb.co.uk' 'uqjwoorgscfcdc.info' 'veomngxsfmhquf.com'
'twkrhljcjnvpia.net' 'hypmkgwqhbgeim.biz' 'voaoccrpxrixgi.ru'
'jqfjfwfevfsmpi.org' 'vfottejwlqknps.co.uk' 'jhtowywljeucpm.info'
'xweqourkauwvga.com' 'lyjlrpfyxihkph.net' 'cpujfbjtjihcqo.biz'
'ddayevydhxtiin.ru' 'ehkgarrhxmtkoi.org' 'fupvymhqvcgqpx.co.uk'
'exylrtjollvamb.info' 'flebqoyxjbigeh.com' 'gpoimkrcapiidt.net'
'hdtxlfhlxfuoeq.biz' 'fkiatkeypwcb.ru' 'sodcpcoghlrn.org'
'gjsaiurookga.co.uk' 'tnncemcvgyvm.info' 'junmmpmddfpe.com'
'wyioihwkutfq.net' 'ktxmbaascstd.biz' 'xxsowrkathjp.ru'
'jgqlkylouewl.org' 'kvluqqxqmhet.co.uk' 'kfblyjyetrbk.info'
'luvufblgluis.com' 'nqvxdetsimko.net' 'ogqhjvguaprw.biz'
'opgxrohihaon.ru' 'pfbhxgtkydvv.org' 'xlovhvcsjrbn.co.uk'
'lpjxdqvgcmcv.info' 'ahysngpukyra.com' '1vw732fl1xtlak0d9gcdqts1.com'
'1hhxat2jy9ifweb2yvdkxcoo1.net' 'fnh1oolf37hjgasfma1p40f80.biz'
'y4vv24qb5q13q9m9y115hf8cp.org' '17ag7la1cpqv936x4kc210zbouf.com'
'1dnkazf8t56dcagwk1v1s8rtzd.net' '1etl09x1b6jhsi17w0z5c1dusl7j.org'
'8y13zu1e1v4lzdnud4a1kfuhdq.net' 'i5puvy1vnn4kb1meomh21ojt7zw.com'
'1i2tgiuo2dmut6zlch1phhjai.org' 'q20jax1483ilr1uprifr4l5php.biz'
'1i4yllqzqm5f6ftwfg21oa4wgx.net' '1umlxpk1m2tka2xw3f736mcvlj.com'
'cucy3716277ccnnv4d11d76pil.net' 'n9azy01viyv7plby6351jdgz32.biz'
'15zje6dakgxkcvy1zjaux0uhm.org' '135qphd1ak9dhm1h4psti75h8s.com'
'1umpqd811heqqk1hyhnip1ietdfj.net' 'wbd63514fao9w82sr3a186y6jh.org'
'1hgsxw6umvwr51pojd8w1yd7rhj.net' 'nx0djtbfg35l1s5rzk8c1rp35.com'
'qte64w1vwo57m1nx083y29xr4u.org' '13fknnp11admf81dj4xbu1fk5zpe.biz'
'1wod47p1uwuwgj1vbdlu1k95ubk.net' 'i4znzjk0aa3p126bshl10wgcje.com'
'ftft6ntxkbzp134e7r9mftw2e.net' 'il0z8ck4kwr5bml4v0198mbi6.biz'
'160lbqt1asieo4vrg3smr4pex.org' '1umovn91wz96px59gzgz1fgqn8n.com'
'14twzv81jv781q1rwotd55stkjw.net' '152bky6exjeki1257ptgoluokv.org'
'rgq2w11a50lyjb7icuw18bhq5h.net' '1mwklghu8ls8jke4s4y1dn64n.com'
'1mjupuc8vqk8wnl7kygnlc2o8.org' 'w02l3822cdep1bpmclsmr6764.biz'
'14d81pv1hajjhz1mceg2m178d6co.net' 'vzkgo013oc900g8isuoudjtbd.com'
'12ldkep1gh0wha1t03e8s11ook52.net' 'xprk6964l3gj1btaqb91nvlunc.biz'
'1jlcv6pt1cxzh1me4vgjeey724.org' '1dwwn81g5bwha19ltfwc1r9rrgg.com'
'qden06cums3v4x3gaq1p170st.net' '1q9z1rl1t0tqc9lutfvz1t54qyy.org'
'di0g4g19m1rkvodnx2j1b56ezq.net' 'klnp9bsjjybrtmzv7vqdhmfy.com'
'ogfhh61gs8f38bfixix16jqwav.org' '1nmwf6q12jm8puuq6akz1xkog8a.biz'
'17f3dbsm6typz1et9nv91ac68k9.net' 'vpdx8l1nack31ol24t6b7t2kf.com'
'1wxxout1s4ii7jow4iie1u4f6t4.net']
最后
以上就是愉快水杯为你收集整理的使用多种算法挖掘Alexa域名数据的全部内容,希望文章能够帮你解决使用多种算法挖掘Alexa域名数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复