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

2023-11-12

这次恶意域名检测实践是第一次自己做机器学习而非单纯复现,参考了第一次鸢尾花的代码和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 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习初实践——恶意域名检测 的相关文章

  • k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

    Pod是有生命周期的 使用凡人皆有一死来描述pod很贴切 当一个工作节点 node 销毁时 节点上运行的pods也会被销毁 ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行 每一个Pod都有一个独
  • IDEA的作用

    IDEA IntelliJ IDEA 是一款由 JetBrains 开发的 Java 集成开发环境 IDE 它不仅支持 Java 开发 还支持多种其他编程语言和框架 包括 Kotlin Scala Groovy Android Spring
  • 【Linux运维】Ubuntu Server的无密码开机自动登录

    需求 最近我们在开发一个基于树莓派的小盒子 我们会采购一些树莓派 装好外盒 装好arm版本的 Ubuntu Server 20 04 系统 并且装上我们开发的配套软件 对接我们云端的服务 最终把小盒子卖给用户并提供一些收费的服务 我们在安装
  • ORACLE如何实现行转列

    可通过正则截取实现 例如下图 将 1 2 字符串通过 截取 分为两行数据 Select Regexp Substr 1 2 1 Level As SKU From Dual Connect By Regexp Substr 1 2 1 Le

随机推荐

  • 2022年安全员-C证操作证考试题库及在线模拟考试

    题库来源 安全生产模拟考试一点通公众号小程序 2022安全员 C证理论题库系安全员 C证全部考试题库上机考试练习题 2022年安全员 C证操作证考试题库及在线模拟考试根据安全员 C证最新教材汇编 安全员 C证考试模拟题随时根据安全生产模拟考
  • 一、robotframework 安装

    测试环境 windows 安装前提 已安装python robotframework基于python环境 python安装过程略过 安装的软件参考的这篇博文robot framework自动化测试参考手册 安装python库 安装robot
  • Linux下静态库生成和使用

    一 静态库概念 1 库是预编译的目标文件 object files 的集合 它们可以被链接进程序 静态库以后缀为 a 的特殊的存档 archive file 存储 2 标准系统库可在目录 usr lib与 lib中找到 比如 在类Unix系
  • layui原生框架下,展示、替换图片(修改页面)

    最终页面效果如下 由于图片没有资源路径 所以没有展示出来 图片展示可以忽略 代码如下 div class layui form item div
  • JDK的安装及配置详细图文教程(win10)

    JDK的下载 进入官网 选择Products下的Software下的java 官网 下拉 找到java SE页面并选择Oracle JDK 进入后选择JDK Download 然后就会进入到jdk最新版本的下载界面 选择系统对应的下载安装包
  • Linux创建用户并修改shell类型

    base root 57beff3260ef sudo su test exit base root 57beff3260ef apt get install zsh base root 57beff3260ef echo SHELL bi
  • react html 显示,react如何控制元素的显示与隐藏功能?

    react如何控制元素显示与隐藏 在vue中常用v if和v show指令 react中用什么方法呢 下面本篇文章给大家介绍一下 有一定的参考价值 有需要的朋友可以参考一下 希望对大家有所帮助 下面说我知道的三种方法 1 通过 state
  • Python3内置模块

    1 os all functions from posix nt or ce e g unlink stat etc os name is either posix nt or ce os curdir is a string repres
  • jvm不同版本(jdk6、jdk7、jdk8)之间的class常量池、运行时常量池、字符串常量池与堆、方法区的种种关系

    这几天研究了一下JVM底层原理 其中的内存分配前前后后看了三天 感觉还是没太看透 先研究到这 做个阶段性的笔记 感兴趣的小伙伴们欢迎大家评论区共同讨论 查阅了各种博客 长篇大论 例证太多 不清晰 本文主要目的精简浓缩一下 感兴趣的去文中参考
  • 数据库报错1264错误

    数据库报错1264 php程序报错1264 这个原因有可能是字段长度不够 改变一下字段长度
  • Install Ubuntu 12.04 on Macbook pro Retina

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Install rEFIt Download and mount the rEFIt 0 14 dmg disk image Double click on the r
  • log4j 2读取配置文件的三种方法

    log4j 2读取配置文件的三种方法 log4j 2读取的配置文件可以分为三类 src下的配置文件 绝对路径的配置文件 相对路径的配置文件 我们一一给例子 直接看代码 package com herman test import java
  • 【Linux之Shell脚本实战】查询邮政编码与对应地区

    Linux之Shell脚本实战 查询邮政编码与对应地区 一 脚本要求 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 配置脚本注释模板 1 编辑 vimrc 文件 2 检查模板生效情况 四 编辑shell脚本 1 创建脚本
  • 「数据结构」三步搞定表达式中缀转后缀 手算法 通俗易懂 C语言

    表达式中缀转后缀 举个例子 一个式子 5 20 1 3 14 如何把该式子转换成后缀表达式呢 其实就是分三步 按运算符优先级对所有运算符和它的运算数加括号 原本有括号的不用加 把运算符移到对应的括号后 去掉括号 对应的具体实现为 5 20
  • 音视频开发系列-音视频核心知识精讲

    音视频开发系列 音视频核心知识精讲 1 视频为什么会花屏 2 音频为什么容易有杂音 3 音视频进阶需要掌握什么项目 音视频核心知识 为什么会花屏 容易有杂音 进阶需要掌握什么项目 https www bilibili com video B
  • day09:定时器

    目录 总结 1 三种解绑事件 2 事件冒泡 3 阻止事件冒泡 4 事件委托 事件代理 5 事件的三个阶段 一 最大的匿名函数 二 定时器setInterval 三 一起摇摆案例 四 亮起来案例 五 美女时钟效果 六 进一步优化时钟 七 渐变
  • 我们用4行代码节省了100万 相见恨晚的PCDN

    我们公司主要做视频在线点播 还有少量视频下载 比较关心网络加速 首先就是价格 其次是首播时间 流畅率这几个核心性能指标 目前使用阿里云PCDN也有几个月了 整体结果是超预期 值得安利的 写这篇文章 希望能通过选型对比 接入过程 效果实现几个
  • torchserve使用-注册模型设置参数(二)

    目录 1 自定义处理程序 2 托管多个模型 3 模型接口 3 1 添加注册新模型 3 2 查看是否注册成功 3 3 查看注册模型基本信息 3 4 设置注册模型参数 3 5 使用以下代码注销模型 3 6 模型版本控制 4 记录和指标 1 自定
  • xxl-job-admin多数据库支持

    记录一下改造过程 针对 xxl job 2 3版本 什么是xxl job 你的系统中有很多定时任务 如果你想统一管理 你需要一个调度系统 XXL JOB是一个分布式任务调度平台 其核心设计目标是开发迅速 学习简单 轻量级 易扩展 githu
  • 机器学习初实践——恶意域名检测

    这次恶意域名检测实践是第一次自己做机器学习而非单纯复现 参考了第一次鸢尾花的代码和GitHub的UrlDetect中的特征提取参数的代码 一 数据处理 首先要实现自动化处理数据 在这里我没有使用urlparser而是直接写脚本提取域名 提取