之前听说过这种比较厉害的手段,昨天算是领教到了,弄了大半天原理,寻找映射关系,看了好些个案例,有汽车之家,58同城,猫眼电影等案例。
其实,思路是大致一样的,寻找映射关系,总会有不变的地方。先看下网站源码和显示的区别。
每次刷新源码的数字都会变化,但是显示的数据是不变的。查看后发现是base64加密,自定义了字体,转换了数字,0-9,对应不一样的数字。下图就是自定义的字体的字符串,直接复制到最后括号")“之前,以”="号结束。
然后通过fonttools工具转换成字体文件(.ttf,woff)等文件形式。然后可以在百度字体编辑器打开查看(貌似打不开woff的文件ttf的不受影响)。
自定义了0-9的数字和英文的对应,在fonttools工具打开xml后是这样。看不懂没关系,可以多做一两个ttf文件打开做对比,看有什么不一样。
这里只发现了0-9位置是不变的,变化的就只有英文所对应的数字有变化。
到这里,我也没弄清楚,源代码的数字,怎么和以上的代码对应起来,有的字体文件的x,y坐标等都是有变化的。
我猜这应该是数字8的描述渲染了。那么对应的是哪一个数字?这里我还一头雾水,英文数字怎么和0-9对应的?我再打开了一个字体编辑做了对比。反反复复看了几个xml和字体编辑的字体。和网上大佬做过的案例怎么不太一样,后来我灵机一动,看了字体编辑,第一张和第二张图。
0–>five,0–>eight。1–>nine,1–>five,其他以此类推。
那么是不是意味着,0–>5或者0–>8对应?后来却是如我所想,那么只需要关注GlyphOrder,因为不同的ttf文件下,英文的one,等位置是变化的。这意味着。这里的顺序就是代表数字的对应。