推荐
关注
TOP
Message

JS逆向实战13.5——某小说网站 小说字数 和月票字体加密

本文地址: https://www.cnblogs.com/zichliang/p/17408064.html

本网站不算严格意义的逆向,只是爬虫的一个小手段。

声明

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

目标网站

68747470733a2f2f7777772e71696469616e2e636f6d2f616c6c2f

爬取目标


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

网站分析

这个网站我们只爬取首页,也不对详情页做分析。

所以我们只需要分析这个链接
得到其中的对应链关系 即可得到数字
字体TTF加密流程分为

  1. 下载相应的包
  2. 对包进行解析获取其中的映射关系(当然其实这个有逻辑的可以解密解出来 太复杂了我就不说了)
  3. 获取数字

对应的月票也是同理

解决方法

首先我们通过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


这样就能得到完整的数字。

爬取成功!!!

本文地址: https://www.cnblogs.com/zichliang/p/17408064.html

posted @ 2023-05-17 11:23  始識  阅读(914)  评论(0编辑  收藏  举报