新闻中心 分类>>

如何有效拦截拼接式恶意域名的垃圾信息

2026-01-01 00:00:00
浏览次数:
返回列表

本文介绍一种通过预处理文本并结合字符串匹配来精准识别拼接式 spam 域名(如 a#b#c#d#e#f.com)的实用方案,避免正则误杀,提升过滤准确率。

在对抗持续绕过规则的垃圾信息发送者时,依赖复杂正则表达式(如 (?先归一化,再精确判断。

核心策略分两步:

  1. 文本净化(Sanitization):移除所有非字母数字字符,仅保留 a–z、A–Z、0–9,将各类干扰格式统一还原为原始字符序列;
  2. 子串匹配(Exact Substring Check):在净化后的纯文本中,直接查找目标关键词(如 'abcdef'),无需关心原始分隔符。

示例代码如下:

// 假设 $textfield 是用户提交的待检测文本(可能含 URL、描述等)
$cleaned = preg_replace('/[^A-Za-z0-9]/', '', $textfield); // 一步清除所有符号/空格/特殊分隔符

// 检查是否包含被滥用的连续域名片段(不区分大小写)
if (stripos($cleaned, 'abcdef') !== false) {
    // 触发拦截逻辑:标记为 spam,拒绝发布或要求人工审核
    die('Spam domain detected: abcdef.com variant blocked.');
}

优势说明

  • ✅ 简洁高效:无回溯风险,性能远优于多组前瞻断言的正则;
  • ✅ 高精度:仅当 a, b, c, d, e, f 按序连续出现(中间无其他字母数字干扰)时才触发,彻底规避“任意顺序匹配”的误报;
  • ✅ 易扩展:如新增 xyz123.com 变体,只需增加一行 stripos($cleaned, 'xyz123') 即可;
  • ✅ 兼容性强:对 a b c d e f.com、a$b$c$d$e$f.com、a·b·c·d·e·f.com、甚至 azuojiankuohaophpcnbyoujiankuohaophpcnc[d]e{f}.com 均能正确归一化为 abcdefcom,从而捕获 abcdef 子串。

⚠️ 注意事项

  • 若目标域名本身含数字或大小写混合(如 AbC123.com),请确保 stripos() 或统一转小写后再匹配(strtolower($cleaned));
  • 此法假设 spammer 的核心特征是字符顺序不变但插入干扰符;若其开始打乱顺序(如 f#e#d#c#b#a.com),需升级为字符频次统计或编辑距离算法,但当前场景下极少发生;
  • 建议配合日志记录被拦截的原始 $textfield,用于持续分析新变种,动态更新关键词列表。

综上,与其在正则迷宫中疲于奔命,不如用“清洗 + 精确匹配”构建一道轻量而锋利的防线——简单,可靠,且经得起时间考验。

搜索