利用半自动补环境插件处理某乎算法
背景:
最近发现了一个半自动补环境插件,感觉还可以,然后人家我看别人的文章有个Demo。
简单理解了下什么原理,下面我就简单说下食用方法,用下来还是不错滴
仓库地址:https://github.com/cilame/v_jstools
某乎页面:aHR0cHM6Ly93d3cuemhpaHUuY29tL3NlYXJjaD90eXBlPWNvbnRlbnQmcT1weXRob24=
插件安装:
我安装的是「Commits on Aug 5, 2022」这个时间版本 因为前面的不知道为啥复制下来就是undefined
https://github.com/cilame/v_jstools/tree/1ee5bdea941b20745bb2b711f861719c71288723
然后「解压」–> 「打开 chrome://extensions/ 页面 」–> 「打开开发者模式」 -> 「加载文件夹」就OK
然后找到插件,「打开配置页面」:
这个是什么意思呢,就是在加载页面的时候会对涉及到的记录你在浏览器里面的值然后进行函数Hook
寻找算法:
打开页面找到浏览器请求,随便找一个就能发现:
*我们先明确下我们的目标:找到如何组成2.0_xxxxxxxx
的来路
- 先全局搜索「x-zse-96」能找到两处,这里我就直接说在这里打就OK:(格式化代码都会吧)
- 刷新整个页面,分析断点处的信息:
2.1 分析signature怎么来的:
断点不动,然后点击控制台,发现f()(s)
是一串值【这里我们就暂时不分析这个怎么来的了(篇幅有限)】
前面那个(0, F®.encrypt)是个函数,这里注意,鼠标放在控制台的函数返回上面双击会直接跳转到对应位置
打上断点:
开启插件,脱代码:
刷新页面,重新来到这里:
这个时候就要分析代码了,看见下面的export.default
是把这个D函数导出去了,反过来想这个函数就在这一块内
往上面翻看,会发现是个函数自执行,这样的话就开始扣代码。
运行不报错就OK。
然后你在某乎的控制台会发现大量的打印,那么就是Hook成功了,直接打造临时环境:
创建Node环境:
创建一个env.js复制进去,然后记得先加载这个
在Index.js 把扣的代码放进去,然后在Index.js最上面把env.js引入进来
使用Node执行:(我是丢在沙盒里面的,无所谓没差啥)
这样这个加密参数就出来了,然后里面是有随机值的,所以会发现每次执行不一样
整个使用的思想就是这样,再难也是拼经验、思路、耐心,先这样吧
假如没有这个插件?
没有这个插件就需要补浏览器环境了,运行代码缺啥补啥可以简单理解为,这里我先不展开说了,周末愉快。