大众点评css字体加密

2021-02-11 08:15

阅读:488

标签:ogr   current   调用   view   order   引入   file   注意   文件   

【废话多】

前情提要:在解析大众点评详情页的时候,发现重要数据并没有直接显示,而是通过css加载,如下图,文字显示为方块
技术图片

目前发现两种对应加密方式

1.svg引用

用营业时间举例

这一种对应文本为空,只能通过 class 属性区分,点击检查,可以看到右边属性中有一个 background-image url ,这个以 svg 为后缀的文件是一种可伸缩矢量图形(百度的也不懂),只要知道是调用它来显示文字 的就行了

记住下面的 background:[ - 288.0px, - 477.0px]

技术图片

文件长这样

全是汉字

技术图片

解密方式

还记得刚才要大家记住的 background:[ - 288.0px, - 477.0px] 吗

这个就是一个类似坐标点的东西

[ - 288.0px, - 477.0px] 对应汉字 ‘周’
技术图片

观察 x , y
y 用来确定行数 ——> 477 在 456 - 501 之间,取 501 这一行(都是取大的)
x 用来确定列数 ——> 288/12 = 24 ,而周正好在第 25 个,列表中的序号为 24 (列表第一个都是从 0 开始数的)

为什么除12呢?
以下纯属个人推测,当个参考
前一张图片红框中的 font_size = 12px ,意思是说这个 svg 文件每个文字宽为12px (px是像素的缩写),而 如果我的 x = 288px, 除12正好是第几个(如果结果是小数的话,取整就行)

技术图片

为啥不确定呢?

因为之前遇到过 ,x是除14确定的位置,所以另一种猜测是根据 x 是几的倍数来确定相应位置(就是说不一定全都除12),现在找不到这种了

2.方块解密

技术图片
如图,这种是引入了自定义的字体来显示文字,YaHei是不是很眼熟

network查看文件,方框可以显示为编码, 开头其实不能说是一种编码,是HTML转义序列(?详情请Google一下)
技术图片

打开对应的css文件
技术图片
这个.woff文件就是调用的字体库(没截全)
技术图片
浏览器下载相应的字体,然后解析
这个文件打开之后,如下
技术图片

这里需要用到 fontcreator 软件查看 woff 文件,fontTools库来解析

直接下载这个 woff 文件

fontcreator打开
如下,不再是一堆乱七八糟的字母了
技术图片
上面是编码,下面是对应文字

fontTools 库下载文件转成 xml 文件没办法把编码和文字对应导出(查了很久都说手动解决)

#将当前页面字体库下载至current.woff
resp = requests.get(font_url)
with open(r‘./dazhongdianping/current.woff‘, ‘wb‘) as fontfile:           
    fontfile.write(resp.content)
#读取woff文件
font=TTFont(‘./dazhongdianping/current.woff‘)
#转成xml
font.saveXML(‘./dazhongdianping/m.xml‘)
#获取字符唯一标识
uni_list = font[‘cmap‘].tables[0].ttFont.getGlyphOrder()[2:]
#print(uni_list)

技术图片

然而 600 个字符,这不是难为人吗?只能百度识图解决(注意:此种编码为自定义编码,不是Unicode某种进制的编码),所有网页共用这一个文件(要不真的吐血)
结果如下技术图片

这样就可转换了

以数字2699为例,仔细观察可以发现他们后四位是相同的(网页显示的编码和woff文件的编码),这样,取后四位就能替换出正确字符了
技术图片

结果
技术图片

其他问题比如滑动验证码,展开评论的 js 函数怎么生成,放到以后再说,如果有以后的话

大众点评css字体加密

标签:ogr   current   调用   view   order   引入   file   注意   文件   

原文地址:https://www.cnblogs.com/tuchuss/p/13045424.html


评论


亲,登录后才可以留言!