本网站不算严格意义的逆向,只是爬虫的一个小手段。
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
目标网站
68747470733a2f2f7777772e71696469616e2e636f6d2f616c6c2f
爬取目标
获取如上图所示的数字 以及标题简介 小说名 和小说地址 以及作者名和作者URl
网站分析
这个网站我们只爬取首页,也不对详情页做分析。
所以我们只需要分析这个链接
得到其中的对应链关系 即可得到数字
顾
字体TTF加密
流程分为
- 下载相应的包
- 对包进行解析获取其中的映射关系(当然其实这个有逻辑的可以解密解出来 太复杂了我就不说了)
- 获取数字
对应的月票也是同理
解决方法
首先我们通过
FontCreator
上文的字体文件。fontCreator官网: https://fontcreator.com.cn/ 点击免费下载 下载即可 有免费试用权限
如图所示映射关系如上图
然后我们通过代码把两者对应起来。
下面展示部分代码
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
这样就能得到完整的数字。爬取成功!!!