目录
一、反爬参数如图
二、知识点提前Get
-
1.cookie一般是两种,要么服务器生成,要么js生成,可通过如下方式判断
-
2.为啥要补环境:简言概括下,是因为我们知道这个js文件代码内容会生成我们想要的参数,但是放到本地nodejs环境下运行不出结果,因为缺少浏览器环境特有的一些window/document/navigator/localstorage等参数,所以我们需要把这些缺少的浏览器环境补上,让这份js代码在本地nodejs环境下也能运行出结果来。请看这个图10秒钟
-
3.补环境分三部分,上中下,在最上面放好你补的环境参数,中间部分放好js代码,最下面部分放生成的目标参数,补环境的好处就是我们完全不用考虑内部的算法逻辑,让它能正常跑起来输出就行
三、v_jstools安装
-
1、下载地址 https://github.com/cilame/v_jstools 来自v佬开源开发,大赞
-
2、安装如图:打开 chrome://extensions/ , 然后把解压后的文件夹拖进去就可以
-
3、然后这里把他固定住
四、详细分析流程
-
1.先点击打开如下两个开关,然后打开配置页面
-
2.如下插件配置详情,勾选上总开关,DOM开关,以及常用的挂钩,然后关掉该配置页面
-
3.直接看视频-缺啥补啥的方法补环境:https://www.bilibili.com/video/BV1FN4y1d7av/ 或者星球文章 后,我们知道生成cookie的js代码,如图hook到了cookie,然后堆栈回溯查看定位到具体的js文件内容
-
4.所以我们先在vscode里面新建一个js文件,把js代码和希望输出的函数写好,还是三部分,第一部分待补的环境,后面将插件生成的临时环境放过来,第二部分js代码也就是我们上个文章介绍的生成cookie的js文件,第三部分生成cookie的调用是我们手动添加的函数
-
5.我们继续回到浏览器里面,先清掉缓存cookie
-
6.然后刷新网页,在滑动鼠标下滚下,防止无法正常生成临时环境,如下弹出,代表环境参数已经生成好
-
7.我们回到vscode里面,在刚刚新建的js文件里面ctrl+v粘贴刚刚生成的临时环境,放在最上方
-
8.接下来,我们运行下已经补好环境的js文件,最后发现可能会出现如下几种情况:生成的补环境之间能用;已经能生成正常cookie但是不能用;完全生成不出cookie结果值;所以这里适不同情况调试;接下来我会讲两种一种是直接能用的,一种是需要调试才能出结果的情况,大概率大家使用插件的时候也会遇到这个情况
-
1)生成的补环境直接能用
-
2)已经能生成正常cookie但是不能用,一直是固定的
-
3)完全生成不出cookie结果值
方法一:本案例操作流程之-生成临时环境-直接可以用的情况
-
1.我们还是按之前的步骤清掉缓存,打开插件的勾选项,然后这里唯一要注意的点就是需要勾选script断点,然后用它生成的临时环境
-
2.刷新网页后,跳到目标生成cookie的js文件被断住的js后,我们取消script断点,直接下一步调试过去
-
3.这时候点击插件的生成临时环境,可能会报错如下,生成的临时环境无法保存至剪贴板
-
4.多点击几次生成临时环境就可以了,我们把它复制到本地js文件里面
-
5.ctrl+v粘贴到本地js文件中,运行能生成正常cookie,但是程序处于卡死无法退出状态
-
6.ctrl+s保存文件后,再次运行,这个时候已经能正常生成cookie值了,但是同样出现了我们上一篇文章介绍的虽然出来了cookie值,但是无法中断程序退出的现象,就是run后不能自动停掉程序,这时候我们可以尝试将setInterval()定时函数给置空试试,这是因为setinterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终卡死你的网页(具体的大家可以调试看看)
-
7.我们在js代码的最上方的位置添加setInterval = function(){}将定时器置空即可,这时候能正常生成cookie了,并且把日志输出置空var v_console_log = function(){{}}
-
8.接下来我们验证下这份通过插件补的环境,与js代码生成的cookie最终能不能用,用python调用js文件试试,如下我们调用js生成的cookie验证,发现能成功拿到cookie,这说明我们用插件补环境也能用,而上面插件补环境我们只做了两个操作置空定时器,把日志输出关掉即可,接下来分析调试过程中,可能你生成的临时环境不能用的解决方法
方法二:本案例操作流程之-生成临时环境-不可以直接用,需要调试补下
- 1.勾选Caught Exceptions,即使所发生运行时异常的代码在 try/catch 范围内,Chrome 开发者工具也能够在错误代码处停住,这里就不详细介绍了,大概思路如下