这篇文章将为大家详细讲解有关python爬虫怎样解决快手粉丝数及关注数等字体加密问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
想拿一下粉丝数 关注数 描述等
发现字体是加密的 elements是这样的
cdn.nlark.com/yuque/0/2020/png/97322/1607128435174-179522d1-d962-494a-855c-5cb31f67d96b.png">
源代码里是这样的
找了找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~ 解码完成
关于python爬虫怎样解决快手粉丝数及关注数等字体加密问题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。