homoglyph进阶用法:如何自定义同形字符表,让检测能力扩展10倍
homoglyph进阶用法如何自定义同形字符表让检测能力扩展10倍【免费下载链接】homoglyphA big list of homoglyphs and some code to detect them项目地址: https://gitcode.com/gh_mirrors/ho/homoglyphhomoglyph 是一款同形异义字符Homoglyphs检测库内置超过 9000 条字符混淆映射可在 Java 和 JavaScript 中识别被同形字符伪装的敏感词。本文带你解锁它的进阶玩法自定义同形字符表把默认只覆盖 ASCII 字母数字的检测能力扩展到中文、符号、表情等任意字符场景。为什么默认字符表不够用默认版本只为a-z、A-Z、0-9以及-、.这 64 个字符内置了同形映射也就是说它只能拦截「ϲrEd1ᴛ」这种用西里尔字母、数学花体字母伪装英文单词的变体。但真实场景里攻击者同样可以用全角字符替换半角→用零宽字符、特殊空白符混入文本用其他语种的相似字形替换你业务中的关键字符homoglyph 的检测引擎其实是「数据驱动」的只要往映射表里补充字符对检测能力就会自动扩展。这就是自定义同形字符表的意义。数据从哪来认识生成器目录整个字符表由仓库中的 Python 生成器流水线维护核心目录结构如下generator/ ├── source_data/ # 同形字符对原始数据可自由扩充 │ ├── confusables.txt # Unicode 官方混淆表 │ └── confusables_extras.txt # 作者补充的字符对 ├── templates/ # 输出文件的模板 ├── char_manager.py # 字符集合合并等价于并查集 ├── data_file_parser.py # 数据文件解析器 └── main.py # 一键生成入口运行main.py后会自动重新生成以下产物raw_data/chars.txt每行一组可互换字符raw_data/char_codes.txt对应的 Unicode 码点十六进制javascript/src/homoglyph.js浏览器端同形感知搜索函数node/index.jsnpm 模块版本javascript/tests/js/tests/DataTests.js覆盖所有映射的自动化测试三步完成自定义字符表第 1 步添加你的同形字符对在generator/source_data/目录下新建一个数据文件如my_chars.txt格式与confusables_extras.txt完全一致每行一对十六进制码点用分号分隔#后为注释ff04 ; 24 ; MA # ( $ → ) 200b ; 0020 ; MA # ( 零宽空格 → 普通空格 )解析器data_file_parser.py会自动扫描该目录下的所有文件并合并进字符表无需改动任何代码。char_manager.py中的CharacterManager会把传递关系合并成完整的同形集合例如 A→Α、Α→А 会自动归为同一组。第 2 步控制嵌入哪些目标字符main.py第 11 行的CHARS常量决定了最终 JS 映射表覆盖哪些字符CHARS abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.想让你的检测覆盖、_或#直接把它们追加到字符串末尾即可。生成器会只为这些字符生成同形映射控制文件体积。第 3 步一键重新生成在项目根目录执行python3 generator/main.py几秒钟后node/index.js、javascript/src/homoglyph.js和全套测试数据就会带着你的新映射重新生成完毕。不想跑生成器运行时直接注入字符表如果你不想改源码重新构建node/index.js还导出了一个buildSearchFunction函数——它接受任意字符映射返回一个定制化的搜索函数var homoglyphSearch require(homoglyph-search); // 默认版直接用预置字符表 var result homoglyphSearch.search(Get free ϲrEd1ᴛ, [credit]); // 定制版传入自己的映射表 var customSearch homoglyphSearch.buildSearchFunction({ : [\u{2025}] }); var r customSearch(mail me at ⸥abc.com, [mail me at abc.com]);这是最快的验证方式适合灰度测试新字符对的效果。用测试验证新字符表每次重新生成后DataTests.js会针对映射表中的每一对字符自动生成一条用例用同形字符替换目标词中的字符断言仍能被检出。运行测试套件cd node npm test全绿即代表新字符表每一行映射都真实生效不用担心「加了数据但不检测」的静默失败。避坑指南Unicode 高码点字符码点超过 UFFFF 的字符如在 JavaScript 中占 2 个 UTF-16 码元.length会虚高。本库的搜索函数使用 ES6for...of按码点遍历已正确处理但你自行扩展makeSymbolArray逻辑时要留意这一点Java 端同理Homoglyph.java使用int表示码点而非char自行扩展时请沿用这一约定新增字符对时尽量只添加「视觉上可互换」的映射过宽的映射如空格族字符全互相等价可能引入误报小结场景推荐做法扩充映射、发布新版本往generator/source_data/加数据文件跑python3 generator/main.py扩大目标字符覆盖修改main.py中的CHARS常量后重新生成快速验证 / 线上灰度运行时用buildSearchFunction注入自定义映射确认映射生效运行node npm test查看自动生成的 DataTests同形字符检测的天花板不在算法而在数据。掌握这套「数据 → 生成 → 测试」的闭环你就能为 homonym 防护构建出远超默认 64 个字符的定制化检测能力。【免费下载链接】homoglyphA big list of homoglyphs and some code to detect them项目地址: https://gitcode.com/gh_mirrors/ho/homoglyph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

内存映射文件高效I/O:如何用Chronicle-Core OS.map()实现零拷贝大文件读写

内存映射文件高效I/O:如何用Chronicle-Core OS.map()实现零拷贝大文件读写

内存映射文件高效I/O:如何用Chronicle-Core OS.map()实现零拷贝大文件读写 【免费下载链接】Chronicle-Core Low level access to native memory, JVM and OS. 项目地址: https://gitcode.com/gh_mirrors/ch/Chronicle-Core Chronicle-Core 是一个提供对原生…

2026/8/25 10:03:36 阅读更多 →
fuzzball.js API 完整参考手册:TypeScript 类型定义、全部选项与评分函数清单

fuzzball.js API 完整参考手册:TypeScript 类型定义、全部选项与评分函数清单

fuzzball.js API 完整参考手册:TypeScript 类型定义、全部选项与评分函数清单 【免费下载链接】fuzzball.js Easy to use and powerful fuzzy string matching, port of fuzzywuzzy. 项目地址: https://gitcode.com/gh_mirrors/fu/fuzzball.js fuzzball.js 是…

2026/8/25 10:03:36 阅读更多 →
Mem0 Chrome 扩展自动记忆采集揭秘:搜索记录、书签与浏览历史如何变成AI记忆

Mem0 Chrome 扩展自动记忆采集揭秘:搜索记录、书签与浏览历史如何变成AI记忆

Mem0 Chrome 扩展自动记忆采集揭秘:搜索记录、书签与浏览历史如何变成AI记忆 【免费下载链接】mem0-chrome-extension OpenMemory Chrome Extension: Long-term memory for ChatGPT, Claude, Perplexity, Grok etc 项目地址: https://gitcode.com/gh_mirrors/me/m…

2026/8/25 10:03:36 阅读更多 →

最新新闻

深入解析OpenClaw AI Agent执行循环与工具调用机制

深入解析OpenClaw AI Agent执行循环与工具调用机制

1. 项目概述:拆解AI Agent的“思考”引擎最近和几个做AI应用的朋友聊天,大家聊到一个共同的困惑:市面上各种AI Agent框架层出不穷,宣传起来都挺厉害,能自动规划、调用工具、完成任务。但当你真正想自己动手搞一个&…

2026/8/25 10:43:49 阅读更多 →
VSCode自动保存深度配置:从防丢数据到自动化工作流实战

VSCode自动保存深度配置:从防丢数据到自动化工作流实战

1. 项目概述:为什么我们需要关注VSCode的自动保存?作为一名每天与代码打交道超过八小时的开发者,我深知一个流畅、不被打断的编码体验有多重要。回想一下,你是否也经历过这样的场景:正沉浸在逻辑构建中,突然…

2026/8/25 10:43:49 阅读更多 →
VSCode自动保存功能深度解析:从原理到实战配置指南

VSCode自动保存功能深度解析:从原理到实战配置指南

1. 项目概述:为什么“自动保存”是VSCode效率的基石如果你和我一样,每天有超过8小时的时间泡在VSCode里,那么“保存”这个动作,你一天会重复多少次?几十次?上百次?更糟糕的是,你有没…

2026/8/25 10:43:49 阅读更多 →
JavaScript中的this关键字 - JavaScript学习系列文章

JavaScript中的this关键字 - JavaScript学习系列文章

作为前端开发者, this关键字绝对是让人又爱又恨的存在.今天我们就来彻底搞懂它. 一、this到底是什么 简单来说, this是JavaScript中的一个特殊关键字, 它指向当前执行代码的上下文对象. 但具体指向谁, 得看它是怎么被调用的, 来看个示例: console.log(this); //在浏览器中输出w…

2026/8/25 10:43:49 阅读更多 →
Mutiny Fuzzer异常处理指南:6大自定义异常如何精准控制重试、中止与崩溃记录策略

Mutiny Fuzzer异常处理指南:6大自定义异常如何精准控制重试、中止与崩溃记录策略

Mutiny Fuzzer异常处理指南:6大自定义异常如何精准控制重试、中止与崩溃记录策略 【免费下载链接】mutiny-fuzzer 项目地址: https://gitcode.com/gh_mirrors/mu/mutiny-fuzzer Mutiny Fuzzer 是 Cisco Talos 团队开源的网络变异模糊测试框架,它…

2026/8/25 10:43:48 阅读更多 →
基于OpenClaw与OneBot协议构建QQ群AI智能体:从部署到技能调用的全流程实践

基于OpenClaw与OneBot协议构建QQ群AI智能体:从部署到技能调用的全流程实践

1. 项目概述:当OpenClaw遇见QQ,一个AI智能体的新舞台最近在折腾AI智能体,发现了一个挺有意思的开源项目叫OpenClaw,社区里也有人叫它“小龙虾”。这玩意儿本质上是一个AI智能体框架,你可以把它理解成一个“大脑”&…

2026/8/25 10:42:48 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →