摘要
恶意 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 检测提供轻量化、高可靠解决方案。本文完整复现算法流程、提供可运行代码示例、形成从特征提取到模型部署的闭环体系,可为网络安全领域智能检测技术提供理论与实践支撑。
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 安全防御提供重要参考。未来可进一步探索多目标优化、自适应参数调节、大模型特征蒸馏等方向,持续提升动态对抗环境下的检测能力。
编辑:芦笛(公共互联网反网络钓鱼工作组)