破解X眼电影字体动态加密|凹凸玩数据

我们在上一篇文章 《破解大众点评的字体加密中提到了,大众点评只是静态字体加密,这次我们抱着学习的态度以猫眼电影为例讲讲如何破解字体动态加密。

没有了解过字体加密的小伙伴可以先看看上一篇,本文与上一篇重复的部分就不细讲了。

我们打开猫眼电影票房榜单的首页

https://maoyan.com/board/1

很明显,猫眼电影的榜单进行了字体加密。

让我们回忆一下破解大众点评的步骤:

1、下载网站font字体包

2、将font字体包中导入FontEditor 观察得到乱码与数字的关系

3、前缀替换,并将字体名字和它们所对应的乱码构成一个字典

4、根据字典将加密的数字替换

然而,右键刷新页面,字体文件一直在变:

为了探究一下,我们随便下载3个字体文件,对比看看能不能发现其中的规律。

分别重命名为A.woff,B.woff,C.woff,将他们依次导入FontEditor中打开

其中A字体的1对应的是【uniECC8】

B字体的1对应的是【uniE5FD】

C字体的1对应的是【uniEE6C】

并无规律。

我们再将.woff文件转换成.xml文件,看看字体结构有没有相似之处:

1#.woff文件转换成.xml文件 2from fontTools.ttLib import TTFont 3font = TTFont('./.woff') 4font.saveXML('A.xml')

每一个编码都对应一个TTGlyph对象,而许多行的XY坐标点最终绘制成数字。

很多网上的教程到这里就结束了,因为按理说这三个字体的统一数字对应的XY坐标应是一样的。

这说明猫眼最近又新挖了一个坑,继续填坑。

看看上面的三个图,其实他们的XY坐标差异并不大。

所以我们允许在一定范围内的差异就算一样就好啦。

由于有负数,通过abs函数取绝对值

1#对比两个坐标的差异 2def compare(AA, BB): 3    for i in range(5): 4        if abs(AA[i][0] - BB[i][0]) < 80 and abs(AA[i][1] - BB[i][1]) < 80: 5            pass 6        else: 7            return False 8    return True 9#True则可视为是同一个字 10

这样我们就以某字体基准,无论现在实时的字体是哪一个,只要下载下来,再与该字体进行坐标差异对比,相似的就是同一数字。

在网上找了一张思路图,方便大家理解:

我们下面尝试一下:

1、将新下载的字体文件与base_font对比,找到对应关系

2、前缀替换,并将字体名字和它们所对应的乱码构成一个字典

3、根据字典将加密的数字替换

1# 字体解密 2def modify_html(newFont, html): 3    basefont = TTFont('./base_font.woff') 4    unilist = newFont['cmap'].tables[0].ttFont.getGlyphOrder() 5    numlist = [] 6    base_num = ['6', '3', '7', '1', '5', '9', '0', '4', '2', '8'] 7    base_unicode = ['uniF0DA', 'uniE907', 'uniED01', 'uniEAE1', 'uniF206', 8                   'uniE455', 'uniF401', 'uniE19C', 'uniEB76', 'uniF855'] 9    for i in range(1, len(unilist)): 10        newGlyph = newFont['glyf'][unilist[i]].coordinates 11        for j in range(len(base_unicode)): 12            baseGlyph = basefont['glyf'][base_unicode[j]].coordinates 13            if compare(newGlyph,baseGlyph): 14                numlist.append(base_num[j]) 15                break 16    rowList = [] 17    for i in unilist[2:]: 18        i = i.replace('uni', '&#x').lower() + ";" 19        rowList.append(i) 20 21    dictory = dict(zip(rowList, numlist)) 22    for key in dictory: 23        if key in html: 24            html = html.replace(key, str(dictory[key])) 25 return html 26# 返回解密后的html 27

4、利用正则表达式获取数据

1# 正则 2def parse_page(html): 3    pattern = re.compile('<dd>.*?board-index-.*?>(.*?)</i>.*?data-src="(.*?)".*?' 4                         + 'title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>.*?' 5                         + 'realtime".*?stonefont">(.*?)</span>.*?' 6                         + 'total-boxoffice".*?stonefont">(.*?)</span>.*?</dd>', re.S) 7 8    items = re.findall(pattern, html) 9    data = pd.DataFrame(items,columns=['index','image','title','star','releasetime','realtime','total-boxoffice']) 10    data['star']=data['star'].str[3:] 11    data['releasetime']=data['releasetime'].str[5:] 12    print(data) 13    return data 14

运行一下。

get。

本文相关爬虫代码,仅供学习交流:https://t.zsxq.com/RVn6qBU

获取了猫眼电影榜单能做什么呢?扫描下方二维码关注,数据分析部分咱们下回再讲。


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

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/UOWFU5q1SKcW0epywlurIg,可扫描二维码进行关注: 如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

破解X眼电影字体动态加密|凹凸玩数据

我们在上一篇文章《破解大众点评的字体加密(http://mp.weixin.qq.com/s?__bizMzg5NDE3Nzc5Mw&mid2247483857&idx1&sn73f471f9dec5c0948bacb9ef72046e83&chksmc022c6bff7554fa9010a94a856432e306d0e9bf57fa9

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

咕咕咕,我回来啦。放了好久的鸽子,说好的写猫眼票房榜推了将近一个月,轻点打我写猫眼需要先解决字体动态加密,所以先写一篇如何破解简单一点的XX点评字体加密。下面正文开始:大家爬取分析XX点评数据,最常见的无非两种:1、分析所有店铺的各类评分和推荐菜等2、获得店铺里的评论数据

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

咕咕咕,我回来啦。放了好久的鸽子,说好的写猫眼票房榜推了将近一个月,轻点打我写猫眼需要先解决字体动态加密,所以先写一篇如何破解简单一点的XX点评字体加密。下面正文开始:大家爬取分析XX点评数据,最常见的无非两种:1、分析所有店铺的各类评分和推荐菜等2、获得店铺里的评论数据之前写过一篇最火的文章,,就属于第一种。

4cast

4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页: