首页 >> 大全

今日头条-jsvmp-signature参数

2023-11-19 大全 28 作者:考证青年

案例链接:

一、页面分析

1、话不多说,直接抓包。发现我们想要的内容就在这接口,对应的参数可以看到签名。

二、参数分析

1、我是采用的直接搜索,断住后可以看出来加密的参数就是我们访问的url地址,x()函数返回的内容就是加密结果了。

2、定位到了加密位置我们来看一下具体的加密过程,步进过后,我们可以发现一个相对比较绕的或者与三木表达式。其实归根到底就是一顿才做过后,把..sign()方法赋值给了r

依依拆开进行分析:

2.1、将.赋值给n,如果n = null 的话就返回True ,显然这里n=False

2.2、 如果n=void 0 则返回True,其实在js中void 0代表的就是,这里返回也是False

2.3、将n对象中的sign方法赋值给r,如果n.sign=null 则返回True,这里等于False

2.4、三目表达式如果 r != 则返回的内容就是r.call(n, o) 否则就返回 ,显然这里是要执行方法然后拿到加密结果的。

这里的r.call(n,o) = r.call(对象,参数),对于js中的call方法第一个参数是必须要被执行的对象,接下来是参数。大体类似于的库,具体请自行百度。

2.5、搞明白了这些,我们在控制台亲自模拟一遍加密过程,可以来出来是和正常加密的结果一致的

2.6、我们步进到加密方法内部一探究竟,发现他会跳转到.js里面

三、本地调试

1.将整个复制保存出来,方法中,然后我们在创建一个html的页面进行调试。



点赞收藏并转发



2.查看加密结果,虽然和原生生成的对比长度短了点,但是不影响正常使用。

四、本地js调试

1.在本地直接执行

glb = "undefined" == typeof window ? global : window

首先在js代码的头部,我们可以看到他检测了一下环境,如果不存在的话就为全局变量,否则为全局变量。要知道是浏览器常使用的全局变量,是常使用的,他这里就是在检测你的环境是否是浏览器。

所以我们要在头部给一个对象=,也可以使用导入jsdom模块使用dom补充。两种方法自选

2.执行报错,缺少.环境,我们到实际环境中进行查找后补全。

3.执行报错,缺少sign()方法,经推导排查后找到是第二个jsvmp的位置出现了问题,这里再一次检测了,我们本地的运行环境。

解决方案:

我们将此jsvmp拆开来,分为三部分观察会清晰一点,在arr数据这里,头部有一个检测特征的三木运算符,这个特征是只有在node环境才会有的,我们到浏览器中调试是等于,我这里是分别在本地和浏览器打印后,将这个长度为36的数组对比查看发现的。这里我们直接吧他改成void 0即可。

报错位置

本地

浏览器

4.调试报错,缺少href,这里我是直接把浏览器的直接拔了下来。

5.调试报错,缺少ua,这里也是一样

6.全部补齐后运行出来结果了,确认可以正常使用

7.但是相对于浏览器的有点短,后来通过两位大神指点,补充了得到了长度一样的结果

最终调用,拿到正常数据,感谢你的观看!希望本文对你有所帮助!

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了