本文基于渔歌的教程以及K哥爬虫的抖音分析。抓包地址设定为我最喜欢的主播云雀Qqq的页面。在抓包过程中,发现视频加载地址包含以下关键信息:博主ID、msToken和X-Bogus。其中,msToken为6VCiWBzn1jh29Fcw2HpZokr3635f69JMcYRKLCetv9xw363635BC0GLAqc5kWD9Pd49qBhe3glQHLT4VCo2zVHo27-Ughk4DeRjFv-bP4Su2-_Ed1BLWPs=,X-Bogus则是主要目标。msToken存储在本地。我们的目标是X-Bogus。通过断点处理和堆栈回溯,发现视频加载涉及到jsvmp算法,这是一种将代码转换为字节码的加密形式,以混淆代码结构和变量声明,使得分析难以进行。针对这种加密,我们采用插装法进行破解,首先复制原有代码并使用v_jstools进行变量压缩。在代码中找到O作为全局变量管理对象,S控制变量的弹出和塞入,P控制代码执行部分。在代码结构中,有for循环指令,其中P通过j运算得出,而j通过在a数组中A下标获取,最后计算执行代码部分。根据K哥的教程,我们在全局头部进行插桩以获取信息。由于代码中存在两个大的for循环,我们决定在每个循环中都进行插桩。实际测试发现触发XHR或循环JSON时存在问题,因此我们采用try...catch捕获并过滤xhr对象,如果检测到循环则使用缓存处理。在代码覆盖后,我们在内部直接写入数据,并加入window.log以方便数据捕捉。总共抓取了大约8万条数据,通过搜索并断点分析,最终找到X-Bogus的值9。这一值在9的上一个null和9之间产生,具体位置为位置2,索引j为16,索引A为716,值为O。根据K哥爬虫经验,我们设定了断点进行深入分析。进一步分析发现,P指令为charat,m为字符表,w为数组,说明在字符表中获取特定位置的数据。在原数据中,W对应特定字符(不同批次数据略有出入,但逻辑一致)。问题在于,如何生成该字符串以及如何获取特定数字。这两个问题有待进一步研究。研究工作将继续,希望在未来几天内找到答案。