JS逆向实战一:企名片数据加密

本文说明:B站学习笔记整理,仅供学习参考~~

网站:https://wx.qmpsee.com/articleDetail?id=feef62bfdac45a94b9cd89aed5c235be

1. 页面分析及解密

第一步:在网络标签也,无法搜索到页面内容,可能导致原因:

  1. 页面没有加载
  2. 静态页面,字体加密,这时候会涉及HTML源代码有实体编码
  3. 数据加密,动态加密。加密形式:刷新页面:页面不变,新增数据,该情况的数据为后端接口动态数据,静态页面【本网站原因】
    在这里插入图片描述
    第二步:无法确定是什么加密,找一个加密参数进行解密查看解密数据内容。
    在这里插入图片描述
    第三步:在源码中打开对应的js文件,并在涉及加密参数encrypt_data的地方打上断点,重新刷新页面,找到加密参数赋予的变量e
    在这里插入图片描述
    在这里插入图片描述
    第四步:将涉及到的函数复制到本地的js文件中。运行之后,根据参数缺什么补充什么。
    在这里插入图片描述
    箭头放在想查找的函数的地方会出现提示,点击之后直接跳转到对应函数的声明,复制之后进行粘贴。
    在这里插入图片描述
    补充之后的完整代码如下所示:
    在这里插入图片描述
    运行结果,即为我们所想要的数据。
    在这里插入图片描述

2. py文件调用

  1. 找到对应的请求连接进行请求传参
    在这里插入图片描述
  2. 读取js文件,传参运行。
import execjs
import requests

url = 'https://wyiosapi.qmpsee.com/Web/getCaDetail'
data = {
    'page': 1,
    'num': 20,
    'ca_uuid':'feef62bfdac45a94b9cd89aed5c235be'
}
r = requests.post(url, data)
encrypt_data = r.json()['encrypt_data']
with open('qimingpian.js', 'r', encoding='utf-8') as f:
    js_code = f.read()
# 手动指定 Node.js 可执行文件的路径
context = execjs.get(execjs.runtime_names.Node)
context = execjs.compile(js_code)
result = context.call('Mc',encrypt_data)
print(result)

此时会报错
在这里插入图片描述

问题解决:解决execjs库运行时gbk编码的问题

https://blog.youkuaiyun.com/qq_21555569/article/details/131343383

解决办法:将下列代码添加到import execjs引用之前即可

class MySubprocessPopen(subprocess.Popen):
    def __init__(self, *args, **kwargs):
        kwargs['encoding'] = "UTF-8"
        super().__init__(*args, **kwargs)

subprocess.Popen = MySubprocessPopen
os.environ["EXECJS_RUNTIME"] = "Node"

在这里插入图片描述
查看返回的result的类型为dict,所以可以直接进行解析好数据提取。

print(type(result))
data = result
dataList = data['list']
for i in dataList:
    print(i)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值