抖音回复评论:
点击——展开xxx条回复﹀就会出现
https://www.douyin.com/aweme/v1/web/comment/list/reply
直接搜又搜不到
分析调用堆栈
可以看到这个栈是有请求相关的数据的
上面一个栈
所以就是在bdms.js里面生成的
就在这里打上日志断点:“T—>”, T, “E—>”, E, “j---->”, j
但是鼠标就移动了一下就打印这么多日志,还什么都没点
点击①之后立马点击②,然后等它生成日志,这样就减少了不必要的日志
动作要快,姿势要__
与此同时,控制台先搜好a_bogus,注意观查
当出现了a_bogus立马点,第一个不是
第二个是,然后立马去去掉日志断点,动作要快,姿势要__
然后将日志保存到本地
去网络请求对比一下,发现没有问题
现在改为条件断点:
j.length == 2 && j[0] == ‘a_bogus’
直接给我们断住
var j = v.slice(p + 1, p + A + 1)
, T = v[p--]
, E = v[p--];
现在就得分析v是怎么来的
这是a_bogus上面的
搜索payload发现只有一个,那就可以下条件断点了
打上条件断点:
j.length == 2 && j[1][0].indexOf(“payload”) != -1
执行完这个逻辑,下面的逻辑就是a_bogus
现在走完了上面这个,从现在开始就是a_bogus
这里
s =235
t=21
现在直接打上条件断点:s == 235
其他断点都不要了,就从这分析
监视这几个变量,接下来就好好分析v
v是一个栈结构(stack),用于存储执行过程中的临时值
p 是栈指针,用于追踪栈顶位置
v[++p] = xxx 表示压栈操作
v[p–] 表示出栈操作
可以同时访问栈中多个元素,如 v[p]和v[p-1]
// 算术运算
v[p] = v[p] + v[p-1] // 加法
v[p] = v[p] * v[p-1] // 乘法
v[p] = v[p] / v[p-1] // 除法
// 对象操作
v[p] = v[p][propertyName] // 属性访问
v[p] = delete v[p-1][v[p]] // 删除属性
// 函数调用
v[p] = someFunction.apply(context, args)