Spider-天眼查字体反爬
2019-01-21 10:59
1681 查看
字体反爬也就是自定义字体反爬,通过调用自定义的woff文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容!
1.思路
近期在爬取天眼查某公司详情页遇到了字体反爬,经过多次测试,终于解决了字体反爬
首先我们来看一下字体反爬
此图可以看出源代码数字跟页面显示的内容是不一样的,在调试器中看到它有一个类tyc-num
此图可以看出类tyc-num存放的是一个字体,通过network获取这个字体
此图可以看出正常的字体数字是1234567890而现在显示的是7540129863它是顺序打乱的,把tyc-num.woff下载过来,下载过来之后发现windows是查看不了的,我用的是在线工具查看
在线工具链接:FontEditor
此图可以发现索引2对应的是4,说明第4个数字是0,通过Python对woff转换成xml
from fontTools.ttLib import TTFont font = TTFont('tyc-num.woff') font.saveXML('tyc-num.xml')
查看xml文件
此图发现id2对应是4跟在线查看器是一样的,那就找到了对应关系
2.代码实现
安装 fontTools
pip install fontTools
上代码
#!/usr/bin/env python # -*- coding:utf-8 -*- from fontTools.ttLib import TTFont import re font = TTFont('tyc-num.woff') # 打开tyc-num.woff font.saveXML('tyc-num.xml') # 保存为tyc-num.xml with open('tyc-num.xml', 'r') as f: xml = f.read() # 读取tyc-num.xml赋值给xml GlyphID = re.findall(r'<GlyphID id="(.*?)" name="(\d+)"/>', xml) # 获得对应关系 DigitalDicts = {str(i): str(i - 2) for i in range(2, 12)} # 数字对应关系的字典推导式 GlyphIDDicts = {str(Gname): DigitalDicts[Gid] for Gid, Gname in GlyphID} # 通过数字对应关系生成源代码跟页面显示的字典推导式 print('-' * 39 + '数字对应关系的字典推导式' + '-' * 39) print(DigitalDicts) print('-' * 27 + '通过数字对应关系生成源代码跟页面显示的字典推导式' + '-' * 27) print(GlyphIDDicts)
代码运行结果
相关文章推荐
- fontSpider字蛛字体压缩工具使用方法
- 字蛛(FontSpider,中文字体压缩器)网页自由引入中文字体
- 详解node字体压缩插件font-spider的用法
- 用font-spider释放字体文件大小,只取所需!
- 字蛛 font-spider 压缩字体使用方法
- 字蛛(font-spider)让你爱上 @font-face 网页自定义字体
- Font-Spider 一个神奇的网页中文字体工具,就是这么任性
- font-spider利器对webfont网页字体压缩使用
- 字蛛(FontSpider)-中文WebFont自动化压缩工具,让网页自由引入中文字体成为可能!
- 利用字蛛FontSpider压缩webfont字体演示
- iOS 在UILabel显示不同的字体和颜色(转)
- JpGraph 怎样处理中文字体
- js网页时间字体解决方案
- java 程序使用系统缺省字体
- 字体设计之六脉神剑
- Android设置大字体后文字被遮盖、显示补全问题解决
- 推荐Consolas字体用于Code的显示
- 中文字体在 CSS 中的表达方式
- Ubuntu 更改字体
- pycharm2017设置注释字体颜色