开场啰嗦:
前几天一个朋友遇到的问题,在此做个记录,希望对大家有所帮助。前一篇的验证码的js已经追完了,有点乱只能理一理给大家写出来了。最近在忙着看java,手上是还有几个典型的逆向网站的破解思路,后期只能挤点时间来给大家分享了。
*本文若侵犯贵公司权益,请联系本人删除
本文待破解参数:
抖音web端的_signature参数,这个参数其实很容易追到,我们上链接:aHR0cHM6Ly92LmRvdXlpbi5jb20vZTVBU0E0Ni8=,这是用户页面分享出来的连接。
直接全局搜索就能找到了,_signature=signature,那就再搜索signature呗
这不显而易见了么,打上断点之后得出nonce就是用户id,那我们就差_bytedAcrawler呗,继续全局搜索,找到_bytedAcrawler
走到这里了,我隐隐约约感觉到了什么,继续搜"9bd2804c7e68ac461d65"
走到这里看过我之前写的webpack打包的同学都知道,我们开始找分发器呗,打上断点然后我们就能找到分发器的位置
这里肯定有小伙伴要问了,我直接进入_bytedAcrawler.sign这个方法不行么,当然你要把他当一个方法也不是不行,你进入的会是这样一个文件
这里面你要是硬钢也可以,作为一个合格的爬(摸)虫(鱼),我不愿意做。
好了我们先开始扣js代码,我们将分发器扣下来,然后按网页上的js运行下
运行报错,缺少啥呀,缺少ua,那我们就补一个ua就行了
navigator = {
userAgent:"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
继续运行,等到下面截图所示
这好像就是我们想要的嘛,在这里有的小伙伴又要问了,那_bytedAcrawler.sign到底是怎么生成的???
我们在js代码上打上断点,然后可以得出,这不就是jsvmp么。那是不是到这里我们就结束了呢?试着请求下数据
{'status_code': 0, 'has_more': 0, 'max_cursor': 0, 'min_cursor': 0, 'aweme_list': []}
好家伙,没数据,难道是思路错了?
环境缺失:
思路要是错了,那肯定不会得出相差不多的加密结果,那到底是哪里错了呢?自然而然就是想到了是缺失相关环境,给了我一个过不了风控的加密结果。
从各个环境参数开始摸索:
看看到底这js代码都用了哪些属性,当我看document时,它告诉了我用到了createElement的属性,而我继续看createElement时,它告诉我用到了canvas
dom节点这个该怎么补???是不是头好痛,没关系,我们继续看canvas用到了哪些
我们继续补出来,然后像之前一样继续看他们都用到了什么,一直补就行。
最后我们架个服务看看是不是能得到数据
完结,撒花
别的思路:
当然条条大陆通(带)罗马(手镯),jsdom、rpc都行,看情况,我一开始是用jsdom偷懒直接写了,就是有点耗资源,响应肯定是慢了许多。面对现在越来越juan的大环境,手上还是要多点防身手段的(手动滑稽)。
公众号:python小丑鱼