基于深度学习模型(1D CNN)实现钓鱼网站检测

基于keras的1D CNN时间序列分析 介绍 许多文章关注二维卷积神经网络。它们特别用于图像识别问题。1D CNN在一定程度上被涵盖,例如用于自然语言处理(NLP)。很少有文章解释如何构建一个1D CNN。本文试图弥补这一差距。 什么时候应用1D CNN? CNN可以很好地识别数据中的简单模式,然后使用这些模式在更高的层中形成更复杂的模式。当您希望从整体数据集的较短(固定长度)片段中获得有趣的特征,且特征在片段中的位置相关性不高时,1D CNN非常有效。 这适用于传感器数据(如陀螺仪或加速度计数据)的时间序列分析。它还适用于分析固定长度周期内的任 阅读详情
AI摘要

本文介绍了使用1DCNN构建的深度学习模型,针对钓鱼网站进行高精度检测。项目在6,157个真实网站和4,898个钓鱼网站的数据集上,验证集准确率达到了98.2%。模型包含两个卷积层、两个最大池化层、三个全连接层和一个输出层,使用ReLU激活函数。实验结果通过TensorBoard展示,模型在epoch 100后accuracy趋于稳定,验证了模型的有效性。

一、运行环境

  1. windows10系统
  2. 虚拟环境:Anaconda3
  3. python版本:3.8.8
  4. 框架工具:TensorFlow(tensorflow-gpu2.7.0)
  5. 编译工具IDE:VsCode
  6. 环境安装教程:
    1. https://blog.youkuaiyun.com/Gerald_Jones/article/details/121370247
    2. https://blog.youkuaiyun.com/Gerald_Jones/article/details/121549127
    3. https://blog.youkuaiyun.com/Gerald_Jones/article/details/121512837

二、选题背景

2.1 题目

基于深度学习的钓鱼网站检测

2.2 项目简介

本项目提出了一种基于深度学习的方法,实现对钓鱼网站的高精度检测。所提出的方法利用卷积神经网络(CNN)进行高精度分类,以区分真正的网站和钓鱼网站。

2.3 项目的成果

我们使用具有6,157个真实网站和4,898个钓鱼网站获得的数据集来评估这些模型。通过实验验证,验证集的准确率可达98.2%。

三、知识背景

3.1 卷积神经网络(CNN)

CNN属于人工神经网络家族,它是受生物神经网络特性启发的计算模型。经常应用于图像识别、自然语言处理、灾难气候预测等应用场景中。

卷积层:一般情况下,为了能从神经网络中的每一小块得到更多的抽象特征,卷积层的单元矩阵比上一层的单元矩阵更深。卷积层主要作用于提取最优特征。

池化层:池化层的单元矩阵不会比上一层的单元矩阵更深,但是它能在宽度和高度上缩小矩阵的大小,也可以达到减少整个神经网络中参数的目的。池化层作用于减少卷积层特征的维度。

全连接层:通过卷积层和池化层得到的矩阵特征结果,通过构建几个全连接层,实现分类的效果。

softmax层:通过softmax层,可以得到输出样例所属种类的概率分布。

Note1:由于卷积操作是特殊的线性变化,所以将卷积层结果传递到池化层前,都需要经过去线性化处理,常用的是tf.nn.relu.

Note2:CNN的性能一般受层数和滤波器(内核)数量的影响,在CNN的更深层中提取的抽象特征越来越多,因此,所需的层数取决于被分析数据的复杂性和非线性。此外,每个阶段的过滤器数量决定了提取的特征数量。计算复杂性随着层数和滤波器数量的增加而增加。

3.2 一维卷积神经网络(1D CNN)

1D CNN 可以很好地应用于传感器数据的时间序列分析。例如:时间延迟网络 Time Delay Neural Network;同样也可以很好地用于分析具有固定长度周期的信号数据。例如:音频信号,WaveNet。此外,它还能应用于自然语言处理的任务(由于单词的接近性可能并不总是一个可训练模式的好指标,因此 LSTM 网络在 NLP 中的应用更有前途)

1D CNN在包含矢量化的数据集方面也比较适用,这类数据集一般是用来预测某一分类结果,本项目的数据集很符合1D CNN在此方面的应用,因此采用的方式是1D CNN模型。

下图示是conv1D和conv2D的区别,很形象:

3.3 项目的模型

项目的CNN架构如下:两个卷积层、两个最大池化层、三个全连接层、一个输出层。

其中在卷积层利用ReLU(Rectified Linear Units)激活函数:
φ ( z ) = m a x ( 0 , z ) φ(z) = max(0, z) φ(z)=max(0,z)
RuLU激活函数能够在输入和0之间求最大值的函数。ReLU函数能有助于缓解消失和爆炸梯度问题。

项目的1D CNN模型

四、实验

4.1 框架

项目的模型是通过Python来实现,并使用了TensorFlow自带的Kears库,同时也是用了Numpy、Pandas、Scikit Learn等库。

其中Keras是本项目构建模型的主要的库,这里简要介绍一下Keras:Keras是由纯python编写的基于theano/tensorflow的深度学习框架。

适用范围:

  • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)

  • 支持CNN和RNN,或二者的结合。

  • 无缝CPU和GPU切换。

优点:

  • 用户友好:Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量,同时,Keras提供清晰和具有实践意义的bug反馈。

  • 模块性:模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。

  • 易扩展性:添加新模块容易,只需仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。

  • 与Python协作:Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由python代码描述,使其更紧凑和更易debug,并提供了扩展的便利性。

Keras的模块结构

在这里插入图片描述

Keras搭建一个神经网络

在这里插入图片描述

4.2 数据集

项目的数据集采用UCI网站的基础数据集,kaggle上也有相应的数据集。数据集包括从4,898个钓鱼网站和6,157个合法网站获得的11,055个实例。

下图为数据集:

在这里插入图片描述

数据集中具体指标的属性如下表所示:一共有30个属性,

在这里插入图片描述

此数据集的标签释义:

在这里插入图片描述

4.3 程序设计

整体代码的结构示意图如下:

在这里插入图片描述

主要包括几个函数:

gendatas():对原始数据集的处理(归一化、拆分、reshape),返回训练模型用的数据和标签、验证模型的数据和标签。

create_model():使用Keras库创建模型,根据模型搭建流程,依次是卷积层-1、最大池化层-1、卷积层-2、最大池化层-2、Flatten层-1、Dropout层-1、全连接层-1、全连接层-2、输出层-1。

train_model():实现模型权重的保存,便于下次可以直接调用模型进行训练;实现TensorBoard运行log的保存,便于TensorBoard可视化;实现模型的训练。

model的summary如下:

在这里插入图片描述

主函数:

if __name__ == "__main__":
    stamp = datetime.now().strftime("%Y%m%d-%H-%M-%S")
    model_file_path = os.path.join(CURRENT_DIR, "models\\pWeb-cnn1D-"+stamp)
    log_file_path = os.path.join(CURRENT_DIR, "logs\\pWeb-cnn1D-"+stamp)
   
    inputs_train, outputs_train, inputs_test, outputs_test = gen_datas(train, test)

    # 新建网络模型
    model = create_model()
    # 保存网络模型
    display_cnn1D_structure(model, os.path.join(CURRENT_DIR, "images\\1206cnn1D-structure.png"))
    # 训练网络模型:只保留权重
    train_model(model, inputs_train, outputs_train, inputs_test, outputs_test, model_file_path, log_file_path)
    # 保存模型
    # model_path = os.path.join(CURRENT_DIR, "models")
    
    # 测试集验证
    # 验证其中一个数据
    # test_phWeb = tf.convert_to_tensor([inputs_test[0]])
    # pre = model.predict(test_phWeb)
    # # 输出loss 和 accuracy
    # pre = tf.math.argmax(pre, 1)
    # print("prediction:{}".format(pre))
    
    # 验证数据集
    # pre = prediction(model, model_path, inputs_test)

数据处理函数:

def gen_datas(train, test):
    """生成数据
    参数:
        train: 原始训练数据集
        test: 原始验证数据集
    返回:
        X_train_r: 处理后训练数据集
        y_train: 处理后训练标签
        X_test_r: 处理后验证数据集
        y_test: 处理后验证标签
    """

    label_encoder_train = LabelEncoder().fit(train.Result)
    labels_train = label_encoder_train.transform(train.Result)
    label_encoder_test = LabelEncoder().fit(test.Result)
    labels_test = label_encoder_test.transform(test.Result)    
    classes = list(label_encoder_train.classes_)
    # classes_test = list(label_encoder_test.classes_)

    train = train.drop('Result', axis=1)
    test = test.drop('Result', axis=1)
    
    # 标签的种类 = NB_CLASS
    numb_class = len(classes)
    # 数据的归一化处理
    scaled_train = data_scaler(train)

    # 同一文件内数据集:10%作为测试集,90%作为训练集
    # random_state:随机数种子,和random中的seed种子一样,保证每次抽样到的数据一样,便于调试
    sss = StratifiedShuffleSplit(test_size=0.1, random_state=23)
    for train_index, test_index in sss.split(scaled_train, labels_train):
        X_train, X_test = scaled_train[train_index], scaled_train[test_index]
        y_train, y_test = labels_train[train_index], labels_train[test_index]

    # 不同文件作为训练集和验证集
    # y_train = labels_train
    # X_train = data_scaler(train)
    # y_test = labels_test
    # X_test = data_scaler(test)

    # reshape train data 
    # reshape 30*1
    # 也可以reshape 10*3
    X_train_r = np.zeros((len(X_train), NB_FEATURES, 1))
    X_train_r[:, :, 0] = X_train[:, :NB_FEATURES]
    # X_train_r[:, :, 1] = X_train[:, NB_PER_LAYER: NB_PER_LAYER * 2]
    # X_train_r[:, :, 2] = X_train[:, NB_PER_LAYER * 2:]

    # reshape test data
    X_test_r = np.zeros((len(X_test), NB_FEATURES, 1))
    X_test_r[:, :, 0] = X_test[:, :NB_FEATURES]
    # X_test_r[:, :, 1] = X_test[:, NB_PER_LAYER: NB_PER_LAYER * 2]
    # X_test_r[:, :, 2] = X_test[:, NB_PER_LAYER * 2:]

    y_train = np_utils.to_categorical(y_train, NB_CLASS)
    y_test = np_utils.to_categorical(y_test, NB_CLASS)

    return X_train_r, y_train, X_test_r, y_test

优化函数:

def compile_model(model):
    """神经网络参数配置
    参数:
        model: 神经网络实例
    返回:
        无
    """
    # 使用随机梯度下降优化器
    sgd = SGD(lr=0.01, nesterov=True, decay=1e-6, momentum=0.9)
    model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])

创建模型函数:

def create_model():
    """使用keras新建神经网络
    参数:
        无
    返回:
        model: 神经网络实例
    """
    model = tf.keras.Sequential(name = "phWeb-cnn1D")
    # 卷积层-1
    model.add(
        layers.Conv1D(64, 
        kernel_size = 10,
        padding = 'same', 
        activation='relu', 
        input_shape = (NB_FEATURES, 1), # 输入模型30*1        
        name="conv-1"
        )
    )    
    # 池化层-1
    model.add(
        layers.MaxPool1D(pool_size=2, 
        strides=2,
        name="max-pooling-1"
        )
    )
    # 卷积层-2
    model.add(
        layers.Conv1D(64, 
        kernel_size = 5,
        padding = 'same',  
        activation='relu',     
        name="conv-2"
        )
    ) 
    # 池化层-2
    model.add(
        layers.MaxPool1D(pool_size=2, 
        strides=2,
        name="max-pooling-2"
        )
    )
    # 激活层-1
    # model.add(
    #     layers.Activation('relu', 
    #     name = "activation-1")
    # )
    # 全连接层-1
    model.add(layers.Flatten(name="fullc-1"))
    # DropOut层-1
    model.add(
        layers.Dropout(rate = 0.4, 
        name = "dropout-1")
    )
    # 全连接层-2
    model.add(
        layers.Dense(8,
        activation='relu',
        name="fullc-2")
    )
    # 全连接层-3
    model.add(
        layers.Dense(4,
        activation='relu',
        name="fullc-3")
    )    
    # 全连接层-4
    model.add(
        layers.Dense(NB_CLASS,
        activation='softmax', 
        name="output-1" 
        )
    )

    # 配置损失计算及优化器
    compile_model(model)
    return model

模型训练函数:

def train_model(model, inputs, outputs, inputs_test, outputs_test, model_path, log_path):
    """训练神经网络
    参数:
        model: 神经网络实例
        inputs: 输入数据
        outputs: 输出数据
        model_path: 模型文件路径
        log_path: 日志文件路径
    返回:
        无
    """
    # 回调函数
    ckpt_callback = callback_only_params(model_path)
    # tensorboard回调
    tensorboard_callback = tb_callback(log_path)
   # 保存参数
    model.save_weights(model_path.format(epoch=0))

    numb_epochs = 300
    model.fit(
        inputs, 
        outputs,
        epochs=numb_epochs, 
        validation_data=(inputs_test, outputs_test), 
        batch_size=16, 
        callbacks=[ckpt_callback, tensorboard_callback]
    )

4.4 实验结果

使用的可视化工具是:TensorBoard

通过图示可以看出,在epoch==100左右,accuracy开始趋于收敛,此时在0.97~0.98间震荡,验证集的正确率最高可达98.28%,使用1D CNN构建的模型,能够很好的预测此类钓鱼网站的真与假。

accuracy曲线:

在这里插入图片描述

loss曲线:

[外链图片转存中...(img-EfoliWkw-1638841341978)]

五、问题与思考

5.1 钓鱼网站的实时检测

后续设计一个可视化界面,根据30个属性向量,主要对输入的网址url进行数据处理,并生成[30, 1]的属性向量,依据目前后台1D CNN模型进行预测,返回是否为钓鱼网站,以来验证此模型是否能够具有现实意义。

基于卷积神经网络的高光谱分类(1D、2D、3D-CNN) 基于卷积神经网络的高光谱分类(1D、2D、3D-CNN) 含代码 阅读详情

相关推荐

23万条钓鱼网站数据集实战:从特征工程到AI模型部署全解析

机器学习在网络安全领域的应用日益广泛,其核心原理是通过算法从数据中学习规律,实现对未知威胁的自动识别。在钓鱼网站检测这一具体场景中,模型的技术价值在于能够高效处理海量URL数据,实时分析多维特征,从而替代传统人工规则,大幅提升检测覆盖率和响应速度。高质量的训练数据是模型效果的基石,一个结构化的数据集通常包含URL、域名、IP、SSL证书信息及明确的分类标签等关键字段。通过特征工程,可以将原始文本信息转化为数值特征,例如URL长度、特殊字符统计、域名注册时间等,供分类模型学习。在工程实践中,随机森林、XGBo

weixin_30274627的博客 486

1DCNN原理详解

一维卷积神经网络(1DCNN)前向计算原理详解

weixin_49216787的博客 3万+

一维卷积(1D-CNN)、二维卷积(2D-CNN)、三维卷积(3D-CNN)

比如:对3幅连续帧用三维卷积核进行卷积,可以理解为用3个不同的二维卷积核(二维卷积神经网络中使用的卷积核)卷积3张图,并将卷积结果相加(通过这种处理,网络就提取了时间之间的某种相关性);上图的三维卷积是对连续的三帧图像进行卷积操作(堆叠多个连续帧组成一个立方体,在立方体中利用三维卷积核进行卷积,这样得到的每个特征map都与上一层中3个邻近的连续帧相连);3(3为时间维度),即每次操作3帧图像,采用了2种不同的3D卷积核,增加了maps数量;2D卷积:卷积核在输入图像的二维空间进行滑窗操作。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1万+

一维卷积神经网络(1D-CNN)

三种不同结构的自定义的1D-CNN,分别是基于VGG结构的1D-CNN(VNet)、基于EfficienNet结构的1D-CNN(ENet)、基于ResNet结构的1D-CNN(RNet)。假设输入数据维度为8,卷积核filter维度为5,不加填充padding时,输出维度为4,如果filter的数量为16,那么输出数据的shape就是4*16;一维卷积神经网络的基本结构与二维卷积神经网络(2D CNN)类似,但主要区别在于卷积操作是在一维序列上进行的。这种方法在音乐创作和自动生成领域具有广泛的应用前景。

搏博的专栏 4万+

基于深度学习的入侵检测系统设计与实现

深度学习,入侵检测系统,网络安全,卷积神经网络,循环神经网络,异常检测 1. 背景介绍 随着互联网的快速发展和数字化转型进程的加速,网络安全问题日益突出。网络攻击手段日益复杂,传统的入侵检测系统(IDS)难以有效应对新兴的攻击威胁。深度学习作为一种强大的机器学习技术,凭借其强大的特征

AI架构师小马 1307

12、情感识别与网络钓鱼检测研究

本博客探讨了情感识别与网络钓鱼检测两个领域的研究进展。在情感识别方面,利用生理信号构建自定义深度学习模型,并通过LOSO交叉验证评估性能,发现神经网络在多数标注类型下表现最佳,但存在数据集规模小和特征组合影响准确率的局限性。在网络钓鱼检测方面,采用基于AI/ML的方法,结合CNN架构进行迁移学习与特征提取,实现高效检测,其中DenseNet201表现出色。研究还对比了不同检测机制的优劣,并提出了未来改进方向,如扩大数据集、优化特征提取与模型泛化能力。

ppp33的博客 61

基于深度学习的钓鱼网站检测系统

随着互联网应用的普及,钓鱼网站成为网络安全的主要威胁之一。攻击者通过伪造仿真页面骗取用户敏感信息(如账号密码、银行信息等),其危害性呈逐年上升趋势。据统计,2023年全球约有370万起钓鱼攻击事件,造成超过200亿美元损失。传统检测方式依赖黑名单与规则匹配,存在更新滞后与泛化能力弱等问题。因此,亟需一种高效、自动化、智能化的钓鱼网站识别技术,提升安全防护能力。本课题旨在构建一个基于深度学习的钓鱼网站检测系统,能够自动提取URL及网页行为特征,通过模型识别潜在钓鱼风险,从而实现快速、高准确率的检测。

laoman456的博客 1799

31、网络安全:钓鱼网站、垃圾机器人与网络欺凌检测分析

本文探讨了网络安全中的三大主要问题:钓鱼网站、垃圾机器人和网络欺凌。针对钓鱼网站,采用IG特征选择与神经网络等方法进行检测;对于垃圾机器人,分析了众包、基于图和基于异常的检测技术,并提出了基于深度学习的检测流程,涵盖数据收集、预处理、特征提取、模型训练与测试;在网络欺凌方面,指出了检测难点及传统方法的局限性。最后,文章展望了未来多技术融合的检测策略,以提升网络安全防护能力。

d6e7f8g9h的博客 103

基于特征工程与深度学习的钓鱼URL智能检测框架设计与实践

在网络安全领域,钓鱼攻击是常见且持续演变的威胁形式,其核心在于通过伪装恶意链接诱导用户泄露敏感信息。攻击原理通常涉及URL混淆、域名仿冒和内容伪造等技术,以绕过传统基于规则或黑名单的检测机制。从技术价值看,精准的钓鱼检测不仅能有效降低数据泄露风险,也是构建主动防御体系的关键环节。应用场景广泛覆盖企业邮件安全网关、终端防护软件及网络代理过滤等。本文聚焦的钓鱼URL检测框架,深度融合了词法、网络、语义等多维度特征工程与CNN-BiLSTM混合深度学习模型,通过双通道输入与特征融合,显著提升了检测的准确率与鲁棒性

weixin_33928137的博客 347

13、利用计算机视觉进行网络钓鱼检测

本研究提出了一种基于计算机视觉和深度学习的网络钓鱼检测方法,利用Phish-IRIS数据集中的网站截图,通过多种CNN架构结合迁移学习与表示学习进行特征提取和分类。实验表明,DenseNet201在图像大小为(512,512,3)并使用SVM分类器时表现最佳,真阳性率达90.8%,F1分数达90.6%,优于现有技术。研究验证了深度学习在网络钓鱼检测中的有效性,并为未来扩展数据集、探索新模型和优化性能提供了方向。

ppp33的博客 84

51、医疗物联网与恶意网站检测的前沿技术探索

本文探讨了数字化时代下医疗物联网(IoMT)和网络安全领域的前沿技术。针对医疗物联网系统面临的安全和隐私问题,提出了一种基于雾计算和增量集成学习的轻量级攻击检测系统,即WHTE集成模型,并在NSL-KDD和ToN-IoT数据集上验证了其高效性和准确性。同时,为解决恶意网站检测中CNN模型的准确率不足问题,研究者提出了结合CNN与BiGRU的集成深度学习模型,为恶意网站检测提供了更可靠的方法。总结表明,这些技术在实时性、内存使用和检测准确性方面均表现出色,为未来IoMT安全和网络安全研究提供了重要方向。

b0c1d2的博客 66

基于启发式特征与机器学习的钓鱼网站检测系统实现

在网络安全攻防对抗中,URL分类是识别恶意站点的基础任务。传统黑名单依赖已知样本,对短生命周期域名存在天然滞后。启发式检测不依赖历史库,通过提取URL字符串、域名属性与页面结构中的可计算特征,让机器学习模型自主判断陌生链接的风险。这种思路兼顾效率与可解释性,基于随机森林等树模型,在数千条样本上即可训练出可用分类器。本文从特征设计、数据清洗、模型训练到接口封装,完整展示一条工程化落地路径,并重点解决时间序列划分、误报归因与阈值调节等关键问题,适用于毕业设计、课程项目及中小团队的安全检测场景。

weixin_29050271的博客 51

【论文分享】网络钓鱼URL检测方法 PhishTrim: Fast and adaptive phishing detection based on deep ...

摘要:提出了一种基于深度表示学习的轻量级网络钓鱼URL检测方法PhishTrim。通过Skip-gram预训练模型得到URL的初始嵌入表示,然后使用**BiLSTM**提取上下文依赖,进一步使用卷积神经网络(CNN)提取局部n-gram特征。

vector的博客 1183

基于机器学习的钓鱼邮件检测:从特征工程到模型部署

网络攻击日益频繁,钓鱼邮件已成为企业内网的主要入侵入口。面对海量邮件数据,如何用机器学习模型识别出隐性欺诈文本与恶意链接,是安全运营中的关键难题。从特征工程的角度出发,邮件文本可通过TF-IDF与分词清洗转换为可计算的语义向量,URL则可提取域名年龄、路径深度、IP直连等结构化信号。结合LightGBM与深度序列模型的融合推理,系统能够输出风险分数,并通过阈值动态调优平衡误报与漏报。这一套反钓鱼检测框架,既适合集成到现有邮件网关,也能支撑独立的恶意样本巡检工具,为网络安全防护提供可解释、可改造的工程化方案。

weixin_34246529的博客 219

用1DCNN检测钓鱼网站:一个可直接运行的URL二分类项目

网络钓鱼是网络安全领域最常见的攻击入口之一,攻击者通过仿冒URL诱导用户泄露敏感信息。传统规则库依赖人工更新,难以应对不断变化的恶意链接。利用深度学习进行文本分类,能够从URL字符序列中自动学习危险模式。一维卷积神经网络(1DCNN)作为轻量级模型,兼顾精度与推理速度,特别适合短序列分类场景。本文介绍一个基于1DCNN的钓鱼网站检测项目,覆盖字符级向量化、模型构建、防泄漏划分、指标评估等完整流程,并提供了可直接运行的工程代码,适合安全入门者和二次开发。

weixin_29056145的博客 241

深度学习1DCNN钓鱼网站检测实战

深度学习是机器学习的一个子领域,它通过构建人工神经网络来模拟人脑的工作方式,实现对数据的深度特征学习。人工智能(Artificial Intelligence, AI)则是让计算机模拟、扩展和增强人的智能,处理复杂任务,如理解语言、识别图像、决策和学习等。机器学习(Machine Learning, ML)是人工智能的一个分支,主要研究如何通过算法使计算机系统从数据中学习并做出决策或预测。人工智能和机器学习的发展为深度学习提供了理论基础。

weixin_35753291的博客 1275

基于1DCNN的钓鱼URL检测:从字符序列到模型部署全流程

深度学习在网络安全领域的应用日益广泛,尤其在恶意URL识别任务中,文本分类技术发挥了关键作用。传统规则匹配难以应对不断变化的钓鱼网站,而卷积神经网络中的1DCNN能从URL字符序列中直接提取局部特征,无需复杂的人工规则。通过字符级编码构建整数序列,并结合URL长度、敏感词命中数等数值特征,模型可同时感知局部模式和全局统计规律。在多输入网络结构下,合理的卷积核大小与全局平均池化能提升泛化能力。实际评估中,采用混淆矩阵、精确率、召回率、F1及PR曲线,避免准确率陷阱,并基于业务需求调整阈值。从模型训练到部署,还

weixin_32830601的博客 208

基于1DCNN的钓鱼网站检测:从黑名单到深度学习实战

网络安全领域,恶意URL检测长期依赖黑名单和人工规则,面对不断变种的钓鱼网站显得力不从心。深度学习技术,尤其是卷积神经网络,为URL分类提供了新的解决思路。1DCNN(一维卷积神经网络)将URL视为字符序列,通过局部卷积核自动提取恶意特征,无需人工构造复杂规则,也无需频繁更新外部威胁情报。相比LSTM等序列模型,1DCNN训练速度快、参数少,适合作为安全产品中的基础检测层。在浏览器防护、邮件过滤、威胁情报平台等场景中,基于1DCNN的钓鱼网站检测模型能够高效识别恶意链接,弥补传统黑名单的滞后缺陷。本文以一套

weixin_32501329的博客 205
上一篇: tensorflow在使用过程中遇到的各种小问题
下一篇: VsCode 使用Latex最新教程
GeraldJones
博客等级 码龄12年 182粉丝 82原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值