想拿一下粉丝数 关注数 形容等
发现字体是加密的 elements是这样的
源代码里是这样的
找了找js 原来是用

这些玩意 去
这个ttf里一一对应 而后用 js + css画进去的
找到问题所在,就fuck掉它
把js扣进去?用execjs去执行?太LOW了
既然做python 那就用python去重写
首先用re去拿这个ttf的url (因为每次都变)
先给这玩意下载下来 把这个ttf文件扔fonteditor里 而后去
http://fontstore.baidu.com/static/editor/index.html
瞅瞅
这个时候就发现了货色
不就是这玩意吗,找到对应关系了 那就ok了
TTF文件没方法间接搞啊 ?怎么办
保留成xml !
而后就成了这玩意 ok对应关系也有了 python也能搞了
去写一下 整逻辑就是
先去拿 ttf文件 url 申请url 保留 而后转xml
而后 拿加密前的特殊字符
# 就是这玩意

而后去切割 对应 OK完事
对应关系的代码
依据看到的 id : 0啥也不说
从1~15 就是这些货色
上代码
# 对应关系
def kuaishou_un_font(soup, font_size):
# soup 就是传的 ttf转码成xml的
font_dict = {}
for font_m in soup.glyphorder.children:
if font_m != '\n' and 'humans' not in font_m:
id = font_m.get('id')
name = font_m.get('name')
if id != '0' and int(id) < 11:
font_dict[name] = str(int(id)-1)
elif id == '11':
font_dict[name] = '.'
elif id == '12':
font_dict[name] = 'w'
elif id == '13':
font_dict[name] = 'k'
elif id == '14':
font_dict[name] = 'm'
elif id == '15':
font_dict[name] = '+'
size_dict = {}
for font_k in soup.cmap_format_4.children:
if 'map' in str(font_k):
code = font_k.get('code')[-4:]
name = font_k.get('name')
size_dict[code] = name
return font_dict[size_dict[font_size]]
而后是拿TTF 文件而后转成xml
# TTF转XML
font = TTFont('font_size.ttf')
font.saveXML('font_size.xml')
和split后list去一一解密
# font_url 本人去动静拿 每次都变动
font_url = ''
font_res = requests.get(font_url)
with open('font_size.ttf', 'wb+') as f:
f.write(font_res.content)
font = TTFont('font_size.ttf')
font.saveXML('font_size.xml')
soup = BeautifulSoup(open('font_size.xml'), 'lxml')
try:
fan = user_data_json['obfuseData']['fan'][40:-8].split(';&#x')
fans = ''
for f in fan:
fans += kuaishou_un_font(soup, f)
except:
fans = ''
最初
OK~ 解码实现
——————————————————————————————————————————
TiToData:业余的短视频、直播数据接口服务平台。
更多信息请分割: TiToData
笼罩支流平台:抖音,快手,小红书,TikTok,YouTube
发表回复