网页抓取解密(前后端分离的网站接口被加密了怎么办?)
优采云 发布时间: 2022-04-18 21:01网页抓取解密(前后端分离的网站接口被加密了怎么办?)
一.前言
最近在调试一个前后端分离的网站时,接口被加密了,原来是未加密的。就是结果json中的消息,一堆乱码。解密js一定是必须的。
二.浏览器打开需要微信授权才能登录的网页
第一步是卡住。此页面需要在微信中打开。如何在chrome浏览器中打开它。采集了一些信息。贴的时候忘记了信息的来源,这里是我自己做的详细步骤,很简单。
这里测试一个链接,只是百度的:
/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430
直接用PC浏览器打开会被拦截识别。
第一步打开fiddler拦截所有请求,打开PC版微信。用PC微信打开这个链接
点击同意,然后查看fiddler,如图操作。(貌似可以直接在PC浏览器打开第一个以open.weixin开头的网页。)这种方式可能会导致部分功能不可用或者浏览器控制台报错。
接下来就可以在PC的默认浏览器中看到授权提示了。点击授权后,即可在浏览器中自由调试微信网页。
三.简单的js调试
首先,我没有看系统教程,只是一些简单的文章之类的。只用一点chrome控制台调试断点,不是很复杂。
第一张图中的接口是访问页面渲染数据的接口。json数据中消息的key值一定是需要解密的东西,所以我们需要查看js代码将消息移动到哪里。进入目标页面会加载一个单独的js。命名为 126.js
下一个。在这个js文件中找到消息移动到哪里,然后看图操作
这时候就设置了断点,浏览器返回进入这个页面,这里js会被打断。鼠标悬停在断点上会有提示。点击提示输入断点调用的相关代码。
这时候点击下图浮动的地方,wybzd这个地方。查看如何调用代码来处理此消息。
处理消息的js代码差不多就到这里了。使用AES加密和解密,一种对称加密和解密,加密和解密都使用密码。
t为密码,this.BVDCVojLpQEGLytM为调用该函数时传入的参数。求这个变量的值。它是第一次找到消息的地方,应该只使用第一个密钥。我不知道在哪里使用其他键
关键是:“8NONwyJtHesysWpM”
接下来,让我们验证密钥是否正确。
任意百度AES在线加解密网站。填写密钥、密文、解密方法进行计算
ECB 模式,pkcs7padding 填充,结果字符集 utf-8。最终结果如图,解密完成。本教程到此结束。
四.总结
微信页面OAuth2.0授权登录可以看到官方文档和阮一峰网络日志。
/mobile/game/miraclepan/pan.jsp?panId=2881&wuid=243430 访问该网页时,后台有进程会检查请求源是否在微信浏览器中。如果没有,请在微信客户端打开链接。如果在微信客户端的浏览器中显示,则允许用户主动授权。我们使用fiddler跳过直接判断客户端环境是否在微信客户端浏览器中,直接提示用户授权。授权后,后端被我们欺骗。还真以为是在客户端浏览器环境下,然后就可以畅通无阻了,但实际环境不是微信客户端环境,通过jssdk调用的功能可能有限。我还没有测试过。
这次js混淆加密真的很简单,处理消息的地方只有一处。还加载了一个单独的文件。只有一层调用关系,加密方式也不是很复杂,但这些东西接触时间长了只会有一些敏感的直觉。哈哈,我才刚开始,挺有意思的,总结一下。