机器学习初实践——恶意域名检测

这次恶意域名检测实践是第一次自己做机器学习而非单纯复现,参考了第一次鸢尾花的代码和GitHub的UrlDetect中的特征提取参数的代码。

一、数据处理

首先要实现自动化处理数据,在这里我没有使用urlparser而是直接写脚本提取域名、提取特征、打标签。由于一开始钓鱼网站和顶级域名就是分别存储在不同的csv中,所以直接对恶意域名标1,正常域名标0。
为了使处理过程更加直观,我分了两步来处理数据,第一步是提取域名+打标签,第二步才是提取特征,最后将两种域名合并到一个文件作为训练数据(放在一起的话后面在训练模型的时候会出现问题)。

对钓鱼网站原始数据的处理:
import numpy as np
import csv
import re
from urllib.parse import urlparse
import tldextract
# 文件路径
path = 'phishing_verified_online.csv'
# numpy读取csv文件
# 注意读取数据的时候delimiter为中文逗号,不然会报错!
data = np.loadtxt(path,dtype=str,delimiter=',',skiprows=1)

# 处理后得到的域名
domain=[]
# 遍历网址,提取域名
i=0
for url in data:
    # pattern = r'[?]'
    # 去掉前面的序号
    i=i+1
    try:
        url =  url.split(',',1)[1]
        # 正则提取域名
        url1 = re.findall(r'http://(.+?)/',url)[0]
        # 添加到domain
        domain.append([url1,1])
        # print(url1)
        # print(domain)
    except:
        print("第{0}条域名处理失败".format(i))
    
# 将域名数组写入新的csv文件
np.savetxt("domain.csv",domain,fmt="%s",delimiter=",")
对顶级域名原始数据的处理:
import numpy as np
import csv
path = 'top-1m.csv'
data = np.loadtxt(path,dtype=str,delimiter=",",skiprows=0)
domain=[]
i=0
for url in data:
    i=i+1
    try:
        url =  url.split(',',1)[1]
        domain.append([url,0])
    except:
        print("第{0}条域名处理失败".format(i))
        
np.savetxt("good_domain.csv",domain,fmt="%s",delimiter=",")
对域名数据提取特征:
import os
import sys
import re
import matplotlib
import pandas as pd
import numpy as np
from os.path import splitext
import ipaddress as ip
import tldextract
import datetime
import ipaddress as ip
from urllib.parse import urlparse

# mal = pd.read_csv("/phishing_verified_online.csv")
# top = pd.read_csv("top-1m.csv")
# mal = pd.read_csv('domain.csv')
# top = pd.read_csv('good_domain.csv')
# mal = mal.sample(frac=1).reset_index(drop=True)
# mal.head()
malpath 
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值