@
目录
- ⛳️ 易 实战场景 车
- ⛳️ 易 实战编码 车
⛳️ 易 实战场景 车
本次字体反爬案例对应的是【易车】点评频道,该站点使用了字体反爬技术,并且是中文字符反爬,可以重点研究下。
站点地址如下所示(全角字符)
代码语言:javascript复制https://dianping.yiche.com/
打开目标站点任意链接之后,可以通过开发者工具发现,其文字部分存在大量的混淆字符。
既然已经发现了字体混淆,那接下来我们再夯实一下字符矢量图相关知识,下载易车的一个字体文件。
字体文件是通过 unicode 编码,然后对应字体文件。 浏览器实现原理是通过传递字符的字节码,转换成 unicode 编号,然后在字体文件中找到字体矢量图,如果没有字体文件,会在系统自带的字体中寻找矢量图。
上图中 uni6211 对应的就是汉字 我 的编码。
⛳️ 易 实战编码 车
有了多篇字体反爬的经验,我们很容易发现本次的目标站点使用了固定的字体文件,名称为 yc-ft.woff
,其中包含了 473 个特殊汉字。
接下来只需要将字体文件编码和汉字的对一个关系读取出来即可。
代码语言:javascript复制from fontTools.ttLib import TTFont
font = TTFont('fonts/yc-ft.woff')
print(font)
font_map = font['cmap'].getBestCmap()
print(font_map)
网页响应的源码格式如下所示:
代码语言:javascript复制<em class="iconfont"></em>车也
其中 
就是对应的字符,然后 e3d0
对应到字体矢量图中,对应的是 提 字。