该网站大致界面如下,我们需要获取的数据是红框里的数据,其加载为ajax.
其参数为:
经过检测,其必要的参数为
token为非必须,这个就好办多了,一看token就是一个加密,既然加密参数不重要,这个最重要的就是找到data的规律。参数分析好了,看看请求头。
这里我把cookie注释掉后请求返回了一串js,看来除了data还要处理cookie,我再测测看哪个cookie值是必须的。
也就是说必须的cookie值是这个rbzid
.
在看看不对的cookie返回的js
也就是说我们要破解这一串js。
先用fiddler看看那串cookie在那里被设置的。
这里没有,结果这个加密的链接这里就有设置这个cookie
小目标又变了,变成如何生成这串url并发送请求。先看第一个请求返回的html
看来不怎么多,搞得都不想写ast了。不过还是试试看。
把unicode转成字母
像这种的如果是StringLiteral
直接把它的extra删掉就好。但是这种是RegExpLiteral
这种需要把它运行一遍获取到真正的值时替换原节点即可,后来我发现直接转的话跟下一个参数没有空格导致报错,能力不行,自己手动加空格。
效果如上。
把16进制转成10进制
可以看到显示的是raw,而10进制则为上面的value,我们可以把extra删掉这样就能显示value了。
效果如上。
呼,做不是程序解决的活真是体力活。后面终于弄好了,开始解决逻辑的东西了~
我们要考虑的是自执行的函数,TOSS这个对象就不要管了。
先解决这种xxx.xx(number)
这种形式的代码。
我这里先解决var h = T0SS;
这类多余代码。
这里可以采用path.scope.rename(oldStr, NewStr)
这个方法,直接替换h为T0SS就可以解决了。
然后就出现了多余的代码var T0SS = T0SS;
我们可以通过一系列判断之后通过path.remove()
删除掉相应节点。
接下来进入正题,解决xxx.xx(number)
这种形式的代码。
碰到这种我们肯定要有T0SS以及它的相应函数,所以这一片代码要扣过来。这部分不讲了,直接上代码。
执行完以上的AST我们的待破解的代码就清晰很多了,这时候就需要补环境了。缺啥补啥,需要注意的是最后一行它的window.rbzns里的参数是动态的,所以我们也要考虑改成动态的。比如说碰到document.createElement这些。看看它的代码之间的关联,如果只是为HTML创建标签的话,直接删掉就好了。
可以考虑像我这样写,这样就会成动态的了。本篇只是在记录自己工作上碰到的一个网站,感觉用AST合适就记录下来了。大家可以练练手哦~