前言
一个“所见非所得”的问题,示例如下:
查看原始DOM发现存在特殊字符:
zero-width-space(ZWSP)
零宽空格是一种不可打印的Unicode字符,用于可能需要换行处。
在HTML中,零宽空格可以替代标签。在一些低版本浏览器中不支持零宽空格。示例如下:
常见的零宽字符
字符 | unicode | html | 作用 |
---|---|---|---|
零宽空格(ZWSP) | U+200B | &ZeroWidthSpace ​ | 用于可能需要换行处 |
零宽不连字(ZWNJ) | U+200C | &zwnj ‌ | 放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,抑制本来会发生的连字 |
零宽连字(ZWJ) | U+200D | &zwj ‍ | 放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使不会发生连字的字符产生连字效果 |
扩展应用
-
防止爬虫
将特殊字符插入文本中,会干扰爬虫对关键词的匹配,但不会影响用户的阅读。
-
信息传递
将按一定规则组合的特殊字符插入到文本中,通过解密就会获取传递的信息。
-
逃脱敏感词过滤
对于没有过滤这类特殊字符,或过滤算法强度较低的网站,可以逃避部分检测
-
隐形水印
可以对内部文件添加隐形水印(在线文档和一些内部链接等。在文件各处插入使用零宽字符加密的浏览者信息)。如果浏览者使用复制粘贴的方式分享了这个文件,我们就能通过嵌入在文件中的隐形水印溯源。