大众点评(最新字体反爬)

”仅限学术交流,如有冒犯请联系作者删除“

查看页面看到它的字体都是一些小框框这就是所谓的字体反爬
看到它的字体都是一些小框框这就是所谓的字体反爬
这个时候我们如果用爬虫去爬的话爬下来的都是一些  这样的怪字符(此处可以直接打开页面源码直接看到)这个和以前的反爬就不同了

一般像这种字体反爬我遇见过的有的是只需做一些简单的替换,还有的就是内部包含了字体文件(.woff,.ttf)等,一般在控制台点击Font然后刷新页面就会出现字体文件
在这里插入图片描述
既然已经知道了是由这个字体文件作怪,那么就将这个字体文件下载下来看看,下载下来之后利用工具点击链接:百度工具

打开字体库,可以很直观的看到字体映射关系
在这里插入图片描述
但是这个woff文件的字体库是会随机更新的,至于怎么判断它是否更新呢,我们就需要写一套代码让它通用的自动来匹配,首先分析woff文件的url,假设内容变化它的url也会发生变化,为了证明我们的猜测我们需要先获取它的url,一般像这种字体反爬它的url通常都是在源码当中我们通过查看源码搜索woff发现没有,这时候我们再去观察我们看到woff文件的控制台,发现Referer里有一个css链接在这里插入图片描述
在源码中找到css链接打开之后就可以看到woff链接在里边,不过里边有很多链接不确定是哪一个,这时我们再去观察页面标签的class属性有两个address和num很直观就是一个汉字的一个是数字的而且与我们打开的字体文件相对应,这样就可以获取它的字体文件

标签的class
在这里插入图片描述
相对应的woff
在这里插入图片描述
Python 获取 woff 的内容

pip install fontTools

安装相应模块 这个库可以对 woff 文件进行读取

font = TTFont('woff/' + name + '.woff')
uni_list = font['cmap'].tables[0].ttFont.getGlyphOrder()

读取出的内容
在这里插入图片描述
把它的映射关系写进列表进行拼接
在这里插入图片描述
因为这套字体会随机变动,所以我们需要先将字体进行存储,采用Redis Hash存储
方案:
因为它有数字和汉字两种不同的字体反爬,所以我们需要建立一个关于数字的 Hash 存储一个关于汉字的 Hash 存储,将字体库同步到 redis 中,根据字体库进行判断,如果出现新的字体库就会自动提取到redis中,如果字体库是旧的那就就直接从旧字体库取出对应值

hash 的 key 为字库名(key 就是字体文件url后缀,如果字体库发生改变那么url也会发生改变), 值为字库映射表

本文只获取大众点评商铺地址和电话信息
GitHub链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值