python破解[5分钟解决拼多多商家后台字体加密]

+【QQ群】拿源码

进入经营总览想把数据存下来发现返回的json数据部分空白如下

这可怎么办

稳住应该是字体的问题,可能是多多自己实现了某种字体,我们去找他的js

发现如我们所想,进行跟踪,发现的确是在css端进行了字体替换,

直接找字体,找到了,根据请求去找,那里请求的

来源在这个请求里

python 复制代码
https://api.yangkeduo.com/api/phantom/web/en/ft

看看返回,跑不掉了,接下来就是下载下来进行查看,字体如何修改的,

我们可以进这个网站 FontDrop!

看到 8的映射 是 unicode

这就是为什么在 json里显示是空白占行的,因为这种unicode是不被显示的

我们只需要做好映射关系 比如 字体8映射 EFC5 就行了,那如何知道 字体8是现实正常字体8。

我们可以通过图像识别,比如ocr识别,如果字体映射关系不变的话这种也还行,但是效率可能比较慢。如果改变的或效率就会更慢。看下图,我们又拉了一次字体,发现字体是改变的,位置,映射都在变,说明,通过 ocr文字识别虽然可行,但是效率上太慢

不得不找到新的方式,经过思索,和找规律,发现可以这么查看,灵机一动,比对多个8,轨迹是不是都是一样的,不下了10几次字体确定是的,我们只需要拿到字体的轨迹就行了,轨迹对应标准数字,我们通过。python开源库,加载字体,获取每个字体的轨迹存下来,平铺成字符串,

就实现了 自动转换,然后在和json中的unicode做映射就完美了,同时写个自动替换脚本自动转json,看成品

防止多多老六找我,只放上部分源码

python 复制代码
#字体转义代码
def getUnames(unames):
    ss = ''
    for x in unames.split('\\u'):
        if x:
            ucode = x.upper()
            if '.' in ucode:
                ucode=ucode.replace('.','')
                ss += ttFont(ucode, ttf_file_path)
                ss += "."
            elif ',' in ucode:
                ucode=ucode.replace(',','')
                ss += ttFont(ucode, ttf_file_path)
                ss += ","
            elif '%' in ucode:
                ucode=ucode.replace('%','')
                ss += ttFont(ucode, ttf_file_path)
                ss += "%"
            else:
                # print(ucode)
                ss += ttFont(ucode, ttf_file_path)
    return ss

+【QQ群】拿源码