14_某小说网站 小说字数 和月票字体加密

Date
May 17, 2023
Created
Mar 2, 2024 02:56 PM
Tags
JS逆向实战
本网站不算严格意义的逆向,只是爬虫的一个小手段。

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标网站

68747470733a2f2f7777772e71696469616e2e636f6d2f616c6c2f

爬取目标

notion image
获取如上图所示的数字 以及标题简介 小说名 和小说地址 以及作者名和作者URl

网站分析

这个网站我们只爬取首页,也不对详情页做分析。
notion image
所以我们只需要分析这个链接 得到其中的对应链关系 即可得到数字 顾
字体TTF加密
流程分为
  1. 下载相应的包
  1. 对包进行解析获取其中的映射关系(当然其实这个有逻辑的可以解密解出来 太复杂了我就不说了)
  1. 获取数字
对应的月票也是同理

解决方法

首先我们通过FontCreator 上文的字体文件。
fontCreator官网: https://fontcreator.com.cn/ 点击免费下载 下载即可 有免费试用权限
notion image
如图所示映射关系如上图 然后我们通过代码把两者对应起来。 下面展示部分代码
def font_encode(self, encrypted_number, font_obj): """ :param encrypted_number: 加密后的数字 :param font_obj: fontTools对象 :return: """ # 获取映射表 mapping_dict = font_obj.getBestCmap() # print("字体加密映射表", mapping_dict) for index, i in enumerate(encrypted_number): new_font_list = re.findall(r'\\d+', i) # 去掉特殊符号 &# &# ; encrypted_number[index] = new_font_list dict_e_a = { "one": '1', "two": '2', "three": '3', "four": '4', "five": "5", "six": '6', "seven": "7", "eight": '8', "nine": '9', "zero": '0', 'period': "." } for i in mapping_dict: # 遍历dict_e_a # print(i) for j in dict_e_a: # dict_的值等于dict_e_a的键 if mapping_dict[i] == j: mapping_dict[i] = dict_e_a[j] # print("替换成数字后的关系映射表", mapping_dict) return mapping_dict
然后通过匹配response去掉特殊符号的值 和 改成阿拉伯数字后的关系映射表,把密文改成明文 100196 =》 3
notion image
这样就能得到完整的数字。爬取成功!!!
notion image