这个项目已经在线上运行一阵子,去掉了一些敏感信息开源出来。
https://github.com/solarhell/fontObfuscator
使用了久经考验的fontTools
包。
基础字体使用的是 https://github.com/minjiex/kaigen-gothic
这个字体覆盖了大部分的 CJK 字符(相比其他的开源中文字体)。
1
jprovim 2019-12-03 12:26:59 +08:00
思路新颖
|
2
imn1 2019-12-03 12:53:41 +08:00
哇靠,头一次见这样的思路
|
3
liyang5945 2019-12-03 13:00:57 +08:00
six six six
|
4
est 2019-12-03 13:03:41 +08:00
我记得还有 per-user 动态生成的。
|
5
wangxiaoaer 2019-12-03 13:06:25 +08:00 1
@imn1 #2 好像点评、电商之类很早就用了。
|
6
wangxiaoaer 2019-12-03 13:07:44 +08:00
楼主这个工具是不是根据输入的明文生成一个新的字体文件?
|
7
okwork 2019-12-03 13:08:12 +08:00 via Android
目前支持那几种字体的混淆啊?
|
8
songjiaxin2008 OP @est #4 您是说每个用户都生成不同的字体吗?这个可以业务接入侧做一下。
@wangxiaoaer #6 是的 相当于一个字体子集化 把需要混淆的字体 单独打出一个文件。 @okwork #7 目前支持的比较好的就是这个内嵌的 https://github.com/minjiex/kaigen-gothic 因为我们的场景需要用到一些生僻汉字作为密文。微软雅黑或者别的常见字体可能缺失了这部分生僻字。另外一个就是考虑到某些字体不可以免费商用。 |
9
songjiaxin2008 OP @okwork #7 如果你想要用特定的字体,可以 clone 下来测试一下。可能会有一些小问题,不过改一下应该能工作。( TrueType 和 OpenType 有一些差异)
|
10
xenme 2019-12-03 13:19:58 +08:00 1
建议是支持 per user 的,否则用处真不大,针对性的太容易破解了,况且现在 OCR 的识别率超级高。
|
12
JCZ2MkKb5S8ZX9pq 2019-12-03 16:28:59 +08:00
万一碰到用户缺字体回退到不同字体,或者渲染设置不一样的话,视觉体验可能会很差。
好像见过几次类似的页面。 |
13
songjiaxin2008 OP @JCZ2MkKb5S8ZX9pq #12 谢谢反馈。我这边选择的基础字体基本是覆盖了常用+生僻的 CJK 字符,之前也有尝试过别的字体,字型缺失会变成一个方块。
|
14
songjiaxin2008 OP @JCZ2MkKb5S8ZX9pq #12 综合考虑选择了这款比较全面的字体。
|
15
songjiaxin2008 OP @xenme #10 per-user 还是需要业务使用这个库的时候 做一些额外的策略。
字型这方面其实还有很多可以做的事,比如自定义 glyph,都是为了提高爬虫成本。 |
16
gaoryrt 2019-12-03 18:15:59 +08:00
反爬第一步
|
17
a719114136 2019-12-03 18:19:22 +08:00 via Android
嗯,看看
|
18
JCZ2MkKb5S8ZX9pq 2019-12-03 18:27:54 +08:00
@songjiaxin2008 不是指缺字的问题,而是字体不一致。
比如整篇文章原本是萍方字体,个别字替代为图片 /svg/嵌入字体,比如雅黑,那看上去有可能会有点不同。 不同字体常见问题,比如笔画粗细,中宫大小,基线高低,默认行距,等等问题。 极端例子,比如我看安卓用户,有些会用很个性化的字体,手写体之类的,忽然出现个替换字体就很明显。 我之前看到的情况是替换了 30 左右,非常高频,比如的得地基本都换了,导致整篇文字基线起伏连绵。 可能发生率不高,或者一般人注意不到。我就是提一下有这个可能性。 |
19
xupefei 2019-12-03 18:47:03 +08:00 via iPhone
很多年前,这种技术在游戏汉化圈用过。为了防止别人提起汉化文本。
坏处就是我把加密前后的对应表弄丢了,现在自己也还原不了了。 |
20
myqoo 2019-12-05 16:38:56 +08:00
写个浏览器扩展破解太容易了
|