JS逆向---字体反爬
字体反爬
学习目标:
- 了解 字体反爬原理
- 熟悉 字体解析过程
一. 字体加密原理
- 简单而言就是利用前端技术干扰,页面可以正常展示,而使用爬虫下载后无法提取正常的数据。
- 在
CSS3
之前,Web
开发者必须使用用户计算机上已有的字体。目前的技术开发者可以使用@font-face
为网页指定字体,开发者可将心仪的字体文件放在 Web 服务器上,并在CSS
样式中使用它。用户使用浏览器访问Web应用
时,对应的字体会被浏览器下载到用户的计算机上。
注:使用自动化selenium
也无法获取正常的数据
二.字体文件处理方式
1. 字体加密特点
- 实例:https://www.shixiseng.com/interns?keyword=互联网IT&city=全国&type=intern&from=menu
- 字体加密的特点
- 在网页上显示正常,在源码里面看到的是乱码或者是问号
2. 定位字体位置
- 字体加密会有个映射的字体文件
- 可以在元素面板搜索
@font-face
会通过这个标签指定字体文件,可以直接在页面上搜索,找到他字体的网址
可以直接把字体文件下载下来, 文件可以一般需要自己修改后缀(网页的字体后缀一般选用woff)
TTF
:这是Windows操作系统使用的唯一字体标准,macintosh
计算机也用truetype
字体作为系统字体。OTF
:这是一种开放的字体格式,支持Unicode字符集,可以在多种操作系统和设备上使用。FON
:这是Windows 95及之前版本使用的字体格式。TTC
:这是一种字体集合格式,包含多个字体文件,可以一次性安装多个字体。SHX
:这是CAD系统自带的一种字体文件,符合了CAD的文字标准,但不支持中文等亚洲语言文字。EOT
:这是早期网页浏览器使用的字体格式,但现在已经很少使用。WOFF
:这是一种网页字体格式,可以在网页中使用,也可以转换为.TTF
格式用于桌面应用。
查看字体文件
- 在线字体解析网站:https://font.qqe2.com/
- 可以直接把文件拖动到在线网址
3. 找文件与网页对应关系
- 都会有对应的映射关系
三. python处理字体
1. 工具库
1 | pip install fontTools # 使用这个包处理字体文件 |
2. 字体读取
1 | from fontTools.ttLib import TTFont |
3. 字体读取
1 | from fontTools.ttLib import TTFont |
字体文件不仅包含字形数据和点信息,还包括字符到字形映射、字体标题、命名和水平指标等,这些信息存在对应的表中:
表 | 作用 |
---|---|
cmap | 字符到字形映射 |
glyf | 字形数据 |
head | 字体标题 |
hhea | 水平标题 |
hmtx | 水平指标 |
loca | 索引到位置 |
maxp | 最大限度的 |
name | 命名 |
post | 后记 |
4. 获取请求到的字体code和name的对应关系
1 | code_name_map = font_aa.getBestCmap() |
5. 获取字体坐标信息
1 | font_aa = TTFont('file.woff') |
四.项目实战
1. 采集目标
2. 逆向结果
1 | import requests |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LittleShark's Space!
评论