1、申 请 I D:12redcircle
2、个人邮箱:liyunheasap@yeah.net
3、原创技术文章:某有声书网站网页端加密资源地址获取过程分享(包含最终可执行代码)
________________________________________
2. Web 网站破解前置知识2.1 请求分析、修改Web 端的资源获取逻辑多数都基于 JavaScript,在打开网页时下载到客户端执行,源码是直接开放的。
打开浏览器的调试工具,就可以看到请求和响应信息(如 Header、URL、请求参数和响应值),并执行重放操作。 如果想替换响应资源,可以使用 Fiddler Classic 和 Charles 等网络分析工具。
通过网络分析工具解析 HTTPS 资源,需要在本机安装可信根证书。分析工具以中间人的方式来查看信息。 2.2 常用的加密算法和库遇到加密参数时,优先考虑以下方式: - blueimp-md5:在浏览器端进行 md5 加密
- Crypto.js:纯JavaScript的加密算法类库,可以方便的在前端进行加解密操作
- base64(不算加密算法,但是很常见)
3. 实例说明使用 Firefox 进行简单的资源搜索、消息分析。 3.1 音频解析访问上述地址,然后点击下面的播放按钮。 当音频播放时,在浏览器调试工具中搜索 36869433,看到如下结果: 每个链接都看一下,可以发现在响应数据中 trackInfo.playUrlList 一节能看到下载链接 复制代码 隐藏代码
https://mobile.ximalaya.com/mobile-playpage/track/v3/baseInfo/1664096284626?device=web&trackId=36869433&trackQualityLevel=1列表中发现了四个地址,其中 url 是加密的。 这时要记得一件事:所有的逻辑解密代码都在 JavaScript 中 查看浏览器的调试器功能,在其中查找网页的 JavaScript 代码地址。找到 s1.xmcdn.com 这一项 看到有五个文件。直接开始搜索下载地址,根据下载地址定位到调用方法 Mt,直接打断点调试 刷新页面后重新触发方法。点击跳出按钮到达函数外层 一个明显的 ajax 请求。看回调部分 可推测是 Lt 方法解析链接。在控制台中查看 Lt 方法: 其中的 Dt 和 Rt 是什么呢? 看起来是个成品的加密库。拿关键词直接百度,看到一大堆的 Crypto.js 直接替换试试 完全一致,解析结束。 3.2 解析专辑中链接下载地址专辑本质上是一组声音列表,只需要获取 trackId,批量调用上一步提到的方法即可。 和上一步的方法一致,找到列表链接: 得到如下列表: 3.3 xm-sign 生成在调用接口时,header 中有一个 xm-sign。这个是如何生成的呢? 回到文件中,搜索 xm-sign,定位到 getSign 方法 然后打断点,先执行 toString 方法 发现静态值 XM_SERVER_CLOCK,猜测是服务器时间的含义。先放在一边,进入函数中调试。 红线上的这些值,可以直接在控制台中执行看结果。比如说 c('0x13'),可以得到下图的结果 最终的代码如下一节 getSign 所示 4. 核心代码:
|