听说头条更新了,而且我下个周确定入职,所以想练练JS逆向,好久不搞JS逆向这一块了,话不多说,搞起。
参数对比
从以上三图可知我们需要的参数是max_behot_time(时间戳)、as、cp、_signature
寻找加密处
- as、cp
全局搜索as:
即可搜到as和cp,打个断点下拉就能看到了~
我们可以看到as和cp来自e,而这个e是下图
找到a()
进入到a之后看看这个o是啥玩意。
再步进C
这个是是在某个自执行函数里面的,我们一般把这个自执行抠出来。报错的地方不影响的话直接去掉即可。
2. _signature
这个参数是最让一般人头疼的,我们来慢慢的解决它。
全局搜索找到这个地方。找到p.calcSignature
所代表的的函数p()
看到那么多location、window就知道这个东西有进行环境检测。能写死先写死。
这个参数是除了_signature之外所有参数拼接而成的url:"https://www.toutiao.com/toutiao/api/pc/feed/?max_behot_time=1595566720&category=__all__&utm_source=toutiao&widen=1&tadrequire=true&as=A1153FE1EB50763&cp=5F1BB08776134E1"
window.byted_acrawler.sign的方法实际上是在另一个文件里
这个文件存在着一个大大的自执行函数TAC,这个似乎是头条核心的加密了,我继续整整。
先看看这个window.byted_acrawler这里有个init函数,函数里面的vm就是TAC所在的文件,那我们这边大胆假设一下,这个init的执行之后才有了sign。
扣出p并把TAC整个扣出放入p内。构建参数,跑一遍看看。
是不是给抓包出来的参数对比出来的不一样?目测环境问题。把代码扣出来放浏览器跑跑。
果然是!那问题就是TAC文件里面有环境检测了。看看哪里有window或navigator一般检测就检测这两。
我们看到这里的v是global对象,很有可能通过这个进行了检测。