字体反爬

字体反爬

点点

2021-03-29 09:04 阅读 485 喜欢 0

例如我们定义一个字体<1> 但是对应的svg显示为<5> ,那么肉眼看到的是5 ,通过源码或抓取得到的确是1。 之前的时候是通过一个字体文件,现在慢慢演变为动态字体,每次看到的都不同,所以现在我们需要对字体进行解析,得到最终的数据。

反爬

http://glidedsky.com/level/crawler-font-puzzle-1 ,关于字体反爬的一个课题。

目标地址

根据给予的地址,可以看到不同的源码与数字,那么我们可以通过控制台找到这种字体,通过页面中的base64来指定的字体文件。 先将base64 转为 ttf 文件

代码或工具都可以: https://www.motobit.com/util/base64-decoder-encoder.asp 工具转换。

代码转换(nodejs):

const base64str = xxxx由于太长,此处不写了;//data:font;charset=utf-8;base64, 之后的内容,不要逗号 const fs = require('fs'); fs.writeFileSync('./demo.ttf',Buffer.from(base64str,'base64')); 通过fontcreator软件打开后可以看到,字体展示与unicode标注的都是不同的。

现在,我还没找到除了ocr识别外的更好的办法,之前看文档有说可以从ttf中拿到映射关系的,不过没处理出来..能力有限。而且,这个我也没有使用ocr,直接使用了一个下标判断。

将ttf解析为xml ,并转为对象,然后获取下标,得到映射

const font = require('font-carrier'); const xml2json = require('xml2json');

//加载字体 let transFont = font.transfer('./demo.ttf'); let str = transFont.toString(); let json = xml2json.toJson(str); let obj = JSON.parse(json); let fonts = obj.svg.defs.font.glyph; let map = {}; //就目前来看,还没找到对应的映射关系,比较理想的是,根据下标,除去第一个,从0开始。 fonts.forEach((t, i) => { if (i>0) { let code = t.unicode;//4 let index = i - 1;//0 //对应的意思就是:给浏览器一个字符串4 ,显示出来是 0 。 map[code] = index; } }) console.log(map); 剩下的就是一页一页的抓取,然后获取ttf并解析,最终进行匹配了..

转载请注明出处: http://sdxlp.cn/article/zitifanpa.html


如果对你有用的话,请赏给作者一个馒头吧 ...或帮点下页面底部的广告,感谢!!

赞赏支持
提交评论
评论信息(请文明评论)
暂无评论,快来快来写想法...
推荐
我们日常必备的聊天工具微信,在使用的时候也有误删人的情况出现,这个时候小伙伴们知道怎么悄悄的将删除的人加回来呢?最快将删除的人加回来的方法有哪些呢?
在生活中,我们经常使用到u盘,因为它小巧方便,可是有的时候会遇到u盘不能使用的情况,该怎么去处理哪?现在跟着点点来看一下吧。
网络现在覆盖率越来越大了,在电脑上连接公司内网,可以让我们的网络环境变成专用网络,更便捷、高效的办公,那你知道怎么在自己的电脑上连接公司内网吗?
微信是我们常用的软件,平常生活和工作中都会在聊天中发送图片,可是有时候过几天可能就过期啦,我们无法查看啦。这时候我们还可以把过期的图片恢复过来。其实,也不叫恢复,本身就存在我们自己的手机中,只是加密啦,我们看不到而已,一会点点教小伙伴们先是怎样查看已过期或已清理图片的查看方法,再教小伙伴们永久清除微信内无用图片的方法。可以让手机瞬间腾出几个G的空间。
电脑版微信是一款非常好用的沟通软件,目前很多小伙伴们的日常工作也会靠微信来进行各种各样的沟通等,因为使用它来进行日常办公的沟通和日常生活的沟通,两者互不耽误,又能巧妙的一起进行。
很多使用Mac苹果电脑的小伙伴们,发现电脑中的照片太多了,因此想要清除不想要的照片,但是却不知道如何清除,那么小编就来为小伙伴们介绍一下吧。
连接linux系统后发现又是乱码,已经好多次了,看着实在是难受,赶紧各种找资料进行尝试,最终..发现竟然是工具的问题。 不过我其他的服务器并没有这样的情况昂.. 可能也有部分原因是服务器系统的问题吧。
现在的企业基本都会使用钉钉打卡,因为比较指纹机与打脸机来说,钉钉是最便宜的,只需要个蓝牙和咱们的手机就可以啦,那钉钉是需要管理员对员工进行管理的,比如上班人员与离职人员的管理,下面小编就带小伙伴们看一下,离职员工的删除如何处理。