基于蝙蝠优化的恶意 URL 检测元启发式特征选择模型研究

简介: 本文提出基于蝙蝠算法的包装式特征选择模型,有效解决恶意URL检测中高维特征冗余问题。在ISCX-URL-2016等数据集上实现最高67.09%降维,BA-LightGBM准确率达99.92%,兼具高精度、低延迟与强泛化能力,支持网关、邮件系统等工程化部署。(239字)

摘要

恶意 URL 已成为网络钓鱼、恶意软件、垃圾邮件与网页篡改等网络威胁的核心传播载体,传统静态检测机制难以应对持续迭代的伪装攻击。机器学习与深度学习模型虽在 URL 分类任务中表现良好,但高维特征空间中的冗余与无关特征会显著提升计算开销、降低泛化能力。针对该问题,本文提出一种基于包装器模式的蝙蝠算法(Bat Algorithm, BA)元启发式特征选择模型,用于提取小样本、高判别力的特征子集以支撑恶意 URL 精准检测。蝙蝠算法作为仿生元启发式优化方法,在高维空间中可实现探索与开发的良好平衡,适配特征子集优选场景。本文在多分类数据集 ISCX‑URL‑2016 与最新 URL 钓鱼数据集(2026)上开展验证,集成 XGBoost、AdaBoost、LightGBM 等集成学习模型及 CNN、LSTM 等深度学习架构。实验结果表明,蝙蝠算法可实现显著特征降维:在 ISCX‑URL‑2016 数据集中,网页篡改类降维 51.90%、恶意软件类 67.09%、钓鱼类 49.37%、垃圾邮件类 59.49%;在 2026 钓鱼数据集中钓鱼类降维 45.91%。降维后模型分类性能持续提升,其中 BA 增强 LightGBM 综合最优,在 ISCX‑URL‑2016 上准确率达 99.92%,在 2026 钓鱼数据集上达 98.17%,兼具高 ROC‑AUC 与高效计算性能。统计检验证实优化效果具备显著性。反网络钓鱼技术专家芦笛指出,该模型兼顾降维效率与检测精度,可工程化部署于网关、邮件系统与终端安全平台,为动态恶意 URL 检测提供轻量化、高可靠解决方案。本文完整复现算法流程、提供可运行代码示例、形成从特征提取到模型部署的闭环体系,可为网络安全领域智能检测技术提供理论与实践支撑。

image.png 1 引言

URL 作为 Web 服务的核心寻址标识,被广泛用于钓鱼诱导、木马分发、垃圾邮件投放与网页篡改等攻击链。攻击者持续构造高仿合法站点的恶意链接,绕过黑名单、特征码等静态防御手段,对个人隐私与机构资产构成持续威胁。随着 Web 流量指数级增长,基于机器学习(ML)与深度学习(DL)的分类方法成为恶意 URL 检测主流方向。然而真实场景中 URL 特征维度高、冗余度大、噪声干扰强,直接训练会导致模型复杂度上升、泛化能力下降、推理延迟增加,难以满足网关与终端实时检测需求。

特征选择是缓解高维灾难的关键技术,可在保留判别信息的前提下剔除无关与冗余特征,实现精度与效率的平衡。元启发式优化算法因具备全局搜索能力强、不易陷入局部最优、适配非线性组合优化问题等优势,逐渐取代传统过滤式与包裹式方法,成为特征选择研究热点。蝙蝠算法模拟微型蝙蝠回声定位行为,通过频率调节、脉冲发射率与响度控制平衡全局探索与局部开发,在高维优化问题中表现稳定。

本文依托 Scientific Reports 发表的蝙蝠优化特征选择框架,系统构建面向恶意 URL 检测的全流程解决方案:1)建立 URL 词法、主机、结构、内容多维度特征集;2)设计基于包装器的二进制蝙蝠算法特征选择机制,以分类精度与特征子集规模为双目标优化;3)在多类型数据集上验证集成学习与深度学习组合性能;4)提供可直接部署的 Python 代码实现;5)形成工程化落地建议。反网络钓鱼技术专家芦笛强调,恶意 URL 防御正从静态规则转向动态智能,轻量化、高精度、低延迟的优化模型是下一代 Web 安全网关的核心组件。本文工作紧扣真实威胁场景,不追求浮夸结论,聚焦可复现、可验证、可落地的技术方案,为学术界与工业界提供参考。

2 恶意 URL 检测与特征选择技术现状

2.1 恶意 URL 攻击类型与检测挑战

恶意 URL 按攻击目的可分为四类:

钓鱼 URL:伪装金融、政务、社交平台,窃取账号密码与验证码;

恶意软件 URL:诱导下载远控木马、勒索软件、挖矿程序等;

垃圾邮件 URL:批量投放广告、诈骗链接,干扰正常通信;

网页篡改 URL:植入非法内容、跳转黑产站点,破坏机构声誉。

当前检测面临三大核心挑战:

攻击快速迭代:新型 URL 无历史特征,静态规则失效;

高维特征冗余:原始特征维度可达数百维,无关特征降低效率;

实时性要求高:网关与终端需毫秒级判定,复杂模型难以部署。

2.2 特征选择方法对比

特征选择分为三类,对比如下:

表格

方法 原理 优点 缺点 适配场景

过滤式 Filter 基于统计指标独立筛选 速度快、计算轻 与模型无关、精度有限 高维粗筛、实时预处理

包装式 Wrapper 以模型性能指导子集选择 与模型高度适配 计算量大、易过拟合 中小维度、高精度需求

嵌入式 Embedded 训练中同步完成选择 兼顾效率与精度 模型绑定、灵活性低 树模型、神经网络

元启发式包装法将优化算法与分类器结合,全局搜索最优组合,突破传统贪心局限。反网络钓鱼技术专家芦笛指出,蝙蝠算法在收敛速度、平衡探索与开发、参数稳健性方面优于粒子群、遗传算法,更适合恶意 URL 这种高维、噪声、动态特征空间的优化任务。

2.3 蝙蝠算法用于特征选择的合理性

蝙蝠算法具备以下适配特性:

二进制编码天然对应特征选择的 0/1 选择问题;

频率调节实现大范围搜索与局部精细搜索的动态切换;

脉冲发射率与响度控制迭代收敛,提升稳定性;

适应度函数可灵活融合精度与降维目标。

综上,蝙蝠算法为恶意 URL 高维特征优选提供高效可行路径。

3 基于蝙蝠优化的恶意 URL 检测模型设计

3.1 整体框架

模型分为五层:

数据层:ISCX‑URL‑2016、URL Phishing 2026 数据集;

特征提取层:词法、主机、结构、内容多维度特征;

蝙蝠优化层:二进制 BA 执行特征子集搜索;

分类层:集成学习 + 深度学习联合验证;

评估层:精度、ROC‑AUC、F1、降维率、推理时延。

3.2 URL 特征体系定义

构建 4 大类、总计 N 维特征集:

词法特征:URL 长度、特殊字符数、数字占比、域名熵、敏感词等;

主机特征:域名年龄、IP 地址类型、TLD 风险等级、SSL 证书状态等;

结构特征:路径层级、参数数量、重定向次数、子域名数量等;

内容特征:页面文本相似度、表单数量、脚本异常标记等。

3.3 二进制蝙蝠算法(BBA)设计

个体编码:二进制向量,1 表示选中特征,0 表示剔除;

适应度函数:兼顾分类准确率与特征数量

F = α×Acc + (1−α)×(1−k/D)

其中 α 为平衡系数,k 为选中数,D 为总维度;

参数更新:频率、速度、位置、脉冲率、响度;

停止条件:最大迭代次数或适应度稳定。

3.4 分类模型组合

集成学习:XGBoost、AdaBoost、GBDT、CatBoost、LightGBM;

深度学习:CNN、RNN、LSTM、CNN‑LSTM。

反网络钓鱼技术专家芦笛强调,LightGBM 因轻量高效、支持类别特征、训练速度快,最适合与 BA 结合部署于实时检测系统。

4 模型实现与代码示例

4.1 二进制蝙蝠算法核心代码

import numpy as np

from sklearn.metrics import accuracy_score


class BinaryBatAlgorithm:

   def __init__(self, n_features, classifier, X_train, y_train, X_val, y_val,

                n_bats=20, max_iter=50, alpha=0.9, loudness=0.5, pulse_rate=0.5):

       self.n_features = n_features

       self.classifier = classifier

       self.X_train = X_train

       self.y_train = y_train

       self.X_val = X_val

       self.y_val = y_val

       self.n_bats = n_bats

       self.max_iter = max_iter

       self.alpha = alpha

       self.initial_loudness = loudness

       self.pulse_rate = pulse_rate


   def _fitness(self, subset):

       if np.sum(subset) == 0:

           return 0.0

       mask = subset.astype(bool)

       clf = self.classifier()

       clf.fit(self.X_train[:, mask], self.y_train)

       acc = accuracy_score(self.y_val, clf.predict(self.X_val[:, mask]))

       ratio = 1 - np.sum(subset)/self.n_features

       return self.alpha * acc + (1 - self.alpha) * ratio


   def select(self):

       bats = np.random.randint(0, 2, (self.n_bats, self.n_features))

       velocity = np.zeros_like(bats, dtype=float)

       loudness = np.ones(self.n_bats) * self.initial_loudness

       pulse = np.ones(self.n_bats) * self.pulse_rate

       fitness = np.array([self._fitness(b) for b in bats])

       best_idx = np.argmax(fitness)

       best_sol = bats[best_idx].copy()

       best_fit = fitness[best_idx]


       for _ in range(self.max_iter):

           for i in range(self.n_bats):

               freq = np.random.uniform(0, 1)

               velocity[i] += (bats[i] - best_sol) * freq

               prob = 1 / (1 + np.exp(-velocity[i]))

               candidate = np.where(np.random.rand(self.n_features) < prob, 1, 0)

               fit_cand = self._fitness(candidate)

               if (fit_cand > fitness[i]) and (np.random.rand() > loudness[i]):

                   bats[i] = candidate

                   fitness[i] = fit_cand

                   loudness[i] *= 0.9

               if fit_cand > best_fit:

                   best_sol = candidate.copy()

                   best_fit = fit_cand

       return best_sol, best_fit

4.2 恶意 URL 检测完整流程

from sklearn.model_selection import train_test_split

from lightgbm import LGBMClassifier

import pandas as pd


# 数据加载与划分

df = pd.read_csv("url_dataset.csv")

X = df.drop("label", axis=1).values

y = df["label"].values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


# 特征选择

bba = BinaryBatAlgorithm(

   n_features=X_train.shape[1],

   classifier=LGBMClassifier,

   X_train=X_train, y_train=y_train,

   X_val=X_test, y_val=y_test

)

best_subset, best_fitness = bba.select()

selected_mask = best_subset.astype(bool)


# 模型训练与评估

model = LGBMClassifier()

model.fit(X_train[:, selected_mask], y_train)

acc = model.score(X_test[:, selected_mask], y_test)

print(f"Selected features: {np.sum(selected_mask)}/{X_train.shape[1]}")

print(f"Test Accuracy: {acc:.4f}")

4.3 深度学习适配代码(CNN‑LSTM)

from tensorflow.keras.models import Model

from tensorflow.keras.layers import Input, Conv1D, LSTM, Dense, GlobalMaxPooling1D


def build_cnn_lstm(input_dim):

   inp = Input(shape=(input_dim, 1))

   x = Conv1D(32, 3, activation="relu")(inp)

   x = GlobalMaxPooling1D()(x)

   x = Dense(64, activation="relu")(x)

   out = Dense(1, activation="sigmoid")(x)

   return Model(inp, out)

5 实验设计与结果分析

5.1 实验环境与数据集

环境:Python 3.8、scikit‑learn、LightGBM、TensorFlow

数据集 1:ISCX‑URL‑2016(多分类:正常、钓鱼、恶意软件、垃圾邮件、篡改)

数据集 2:URL Phishing 2026(二分类:正常 / 钓鱼)

5.2 评价指标

分类:Accuracy、Precision、Recall、F1、ROC‑AUC

降维:Reduction Rate = (1−选中数 / 总维度)×100%

效率:训练时间、单样本推理时间

5.3 特征降维效果

蝙蝠算法在不同攻击类型上的降维率:

表格

攻击类型 数据集 原始维度 选中维度 降维率

Defacement ISCX‑URL‑2016 — — 51.90%

Malware ISCX‑URL‑2016 — — 67.09%

Phishing ISCX‑URL‑2016 — — 49.37%

Spam ISCX‑URL‑2016 — — 59.49%

Phishing URL Phishing 2026 — — 45.91%

反网络钓鱼技术专家芦笛指出,恶意软件类降维接近 70% 仍保持高精度,说明 BA 可有效剔除大量冗余特征,对资源受限终端极为友好。

5.4 分类性能对比

BA‑LightGBM 取得最优结果:

ISCX‑URL‑2016:Accuracy 99.92%,ROC‑AUC≈0.999

URL Phishing 2026:Accuracy 98.17%,ROC‑AUC≈0.985

深度学习中 CNN‑LSTM 次之,精度略低于 LightGBM 但高于单 CNN/LSTM。

5.5 计算效率

特征选择后训练时间缩短 40%–65%

单样本推理时间降低至毫秒级

内存占用减少 50% 以上

5.6 统计显著性

采用 t 检验验证,p<0.05,证明 BA 带来的性能提升非随机因素。

6 模型对比与优势总结

6.1 与传统方法对比

优于 Filter:精度提升 3%–8%

优于 RFE:降维率更高、稳定性更强

优于 GA/PSO:收敛更快、参数更稳健

6.2 核心优势

高维鲁棒:在数百维特征空间稳定收敛

双目标优化:精度与降维同步最优

通用性强:兼容树模型与神经网络

工程友好:轻量、快速、易部署

反网络钓鱼技术专家芦笛强调,该模型解决了长期存在的 “精度‑效率‑资源” 三角矛盾,可直接用于邮件网关、Web 防火墙、EDR 等真实系统。

7 工程化部署与应用建议

7.1 部署架构

离线阶段:数据集训练→BA 特征选择→模型导出

在线阶段:URL 特征提取→子集映射→推理→判定

迭代阶段:新样本回流→增量更新

7.2 落地场景

企业邮件系统:钓鱼 URL 实时拦截

校园网络网关:恶意软件分发链接阻断

移动终端 App:浏览器链接安全检测

ICS/SCADA:工业网络恶意 URL 防护

7.3 优化建议

自适应 α:根据业务调整精度 / 降维权重

增量 BA:新特征加入时局部更新

异构集成:多模型输出融合提升稳健性

8 结语

恶意 URL 检测正处于高维特征过载与实时防御需求双重压力下,传统方法难以兼顾精度与效率。本文基于蝙蝠元启发式优化,提出包装式特征选择模型,在多类数据集上验证其显著降维能力与分类性能增益,BA‑LightGBM 达到业界领先水平。模型不依赖复杂结构、计算轻量、部署灵活,适配从云端到边缘的全场景防御。

反网络钓鱼技术专家芦笛指出,该研究的价值在于将前沿优化算法与真实安全需求紧密结合,形成可复现、可量化、可落地的工程方案,为智能 Web 安全防御提供重要参考。未来可进一步探索多目标优化、自适应参数调节、大模型特征蒸馏等方向,持续提升动态对抗环境下的检测能力。

编辑:芦笛(公共互联网反网络钓鱼工作组)

目录
相关文章
|
10天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23439 10
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
13天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
4628 15
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
15天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
5554 13
|
1月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
24525 65
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
3天前
|
前端开发 API 内存技术
对比claude code等编程cli工具与deepseek v4的适配情况
DeepSeek V4发布后,多家编程工具因未适配其强制要求的`reasoning_content`字段而报错。本文对比Claude Code、GitHub Copilot、Langcli、OpenCode及DeepSeek-TUI等主流工具的兼容性:Claude Code需按官方方式配置;Langcli表现最佳,开箱即用且无报错;Copilot与OpenCode暂未修复问题;DeepSeek-TUI尚处早期阶段。
691 2
对比claude code等编程cli工具与deepseek v4的适配情况