破解大众点评的字体加密,这一篇就够了。

朱小五 凹凸数据
咕咕咕,我回来啦。

放了好久的鸽子,说好的写猫眼票房榜推了将近一个月,轻点打我~

写猫眼需要先解决字体动态加密,所以先写一篇如何破解简单一点的XX点评字体加密。

下面正文开始:


大家爬取分析XX点评数据,最常见的无非两种:

1、分析所有店铺的各类评分和推荐菜等
2、获得店铺里的评论数据

之前写过一篇最火的文章,《中国撸串指北:13万家烧烤店的吃货最爱》,就属于第一种。

而大众点评最大的难题就是字体加密,也就是这样

很明显点评网宁可错杀一万,也不肯放过一个,干脆使用了自己定义的字体。不过既然自定义了字体,那么网页肯定需要加载字体文件。

谷歌浏览器,右键检查,进入network 然后刷新页面,点击Font。

我们来下载这个加载的字体:8f8cfde4.woff

右键 copy like address

粘贴到新页面 即可下载

将下载的字体导入FontEditor中打开
(百度家的在线字体编辑器)
http://fontstore.baidu.com/static/editor/index.html

导入之后:

我们再结合网页源代码,就得到了相应乱码与数字的对应关系:

我们可以发现网页中的乱码和FontEditor中的乱码后四位是一样的,比如说图中某店铺的点评数为2481,在网页源代码用【1】来表示,这在FontEditor的字体编辑器中对应的是【unie801,unieb78,uniefe4】。

所以我们要做的是:
1、下载网站font字体包
2、将font字体包中导入FontEditor 观察得到乱码与数字的关系
3、前缀替换,并将字体名字和它们所对应的乱码构成一个字典

def get_font():    font = TTFont('8f8cfde4.woff')    font_names = font.getGlyphOrder()    # 这些文字就是在FontEditor软件打开字体文件后看到的文字名字    texts = ['','','1','2','3','4','5','6','7','8','9','0']    font_name = {}    # 将字体名字和它们所对应的乱码构成一个字典     for index,value in enumerate(texts):        a = font_names[index].replace('uni', '&#x').lower() + ";"        font_name[a] = value    return font_name

运行看一下:

没错,跟刚才观察的结果一致。

那么下面我们获取网页源代码,并根据刚才 get_font()构成的字典进行替换。

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}cookies = {'cookie':'你的cookies'}url = 'http://www.dianping.com/beijing/ch10/g110p1'html = requests.get(url, headers=headers,cookies = cookies).text#requests获得htmlnum = get_font()#获得加密映射关系for key in num:    if key in html:        html = html.replace(key, str(num[key]))#替换html中加密文字

再看一下结果:

这样就破解了点评网的字体加密。

剩下各位就可以自行用喜欢的解析方式来解析html啦。

下篇写猫眼的字体动态加密。

转载请尽量带上二维码或者结尾注明来源,谢谢了。

©著作权归作者所有:来自51CTO博客作者mb5fe18e5a55d8d的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. matplotlib字体设置看这一篇就够了
  2. 如何解决在php用gd库输出图片到微信浏览器出现乱码
  3. php中mysql乱码怎么解决?
  4. 带你解决PHP界面显示中文乱码的问题
  5. php怎么放大字体
  6. php无乱码切割中文字符
  7. php截取字符串不乱码

随机推荐

  1. 【Android 电量优化】JobScheduler 源码
  2. Android NDK 知识系列(一)
  3. Android NDK编程入门
  4. 学习Android过程中的一些博客或工具收集
  5. Android's HTTP Clients -Android的http
  6. 最近整理的Android学习笔记
  7. 命令行下Android应用开发
  8. 【Android】魅族Flyme OS 3摄像头无法预
  9. Android编译详解之lunch命令
  10. android studio 导入eclipse项目 兼容性