补环境框架使用介绍¶
本说明文档简单介绍使用补环境框架来调试(和浏览器无环境调试)来补环境,以过 js 检测执行出正常结果。
1. 前提条件¶
补环境框架使用前准备如下:
- 安装
node
(版本尽量新,支持es6
语法) - 安装
node
库- 安装
node-inspect
库,浏览器无环境调试时需要(npm install node-inspect
) - 安装
node vm2
,补环境框架依赖此库(npm install vm2
)
- 安装
- 谷歌浏览器,或谷歌内核的浏览器,结合浏览器无环境调试时需要
- 一些
js
调试工具,用来快速测试补环境框架导出的代码运行是否正常fiddler js
调试插件;乐易编程助手等,太多了,看自己喜好。
2. 补框架方法¶
补环境是个很繁杂的工作,可以先补
window
,navigator
,location
,document
这类的原型,其它复杂的可以等到具体js
验证时再完善
2.1. 补框架结构介绍¶
补环境框架主要部分在
CatVm2
下的browser
中,即图中 3 部分。
根据上图简单介绍各部分功能:
- 1 部分
launch.json
为vscode
运行配置,包含node
启动程序和无浏览器调试的配置 - 2 部分
node_modules
为安装vm2
等node
库文件 - 3 部分
browser
中为主要内容 - 4 部分
HTMLElements
文件中用来存储HTMLElement
各种对象所需要的文件,比如div
(对应HTMLDivElement
文件),canvas
(对应HTMLCanvasElement
文件) - 5 部分为主要
dom
原型链结构需要的文件,需要不断完善其内容 - 6 部分为框架的工具
tools.node
是将以下功能拼接而已,不重要vm_memory
为框架内存,用于缓存参数及配置vm_print
为日志输出vm_proxy
为代理模块vm_safefunction
为保护函数模块vm_tools
更改浏览器的某些参数、catvm2.node
同样为拼接dom
信息而已- 7 部分为开发方便补环境的方法,比如批量导出原型链上的属性之类的,暂不完善
- 8 部分为程序为调试时需要修改的部分 - code
为当前调试站的 js
- index
为框架入口文件,需要确认 codefile
的名字与当前调试文件 code
的名字一致
2.2. 框架调试方法¶
调试方法以问财站点为例,需要获取请求
cookie
中的v
参数。 对应站点为:问财
-
需要将定位到的
js
部分或整体js
放到 8 部分的code
文件中,用try catch
整体包裹上 -
打开框架的调试和打印输出功能
-
看过 补框架结构介绍 部分后,聪明的你应该知道,修改
catvm.memory.config
等相关配置即可输出日志。 -
新版框架将所有调试输出存储在
catvm
对象上,命令catvm.print.getall
和catvm.memory.print
都可以查看。 -
然后调试或无环境浏览器调试即可,根据报错缺啥补啥,不断完善环境。
- 调试 js
一般调试将报错的地方解决,测试参数的有效性后,就可以导出供 python 使用了。
3. 结语¶
补环境框架可以解决在手补环境时大量的重复工作,增加键盘和鼠标的寿命。 但要是将此框架变得健壮,需要在调试各种站点时不断完善。或者有时间根据真实浏览器的原型链慢慢补全,也是个繁琐的工作。
注意事项:
- 像一些请求头
ua
,href
,hostname
等参数都写死了,没有问题,可以在code
具体站点中重定义。 - 可能遇到导出的代码
v8
等js
调试工具正常,但是node
运行报错,请使用node_vm
库运行,或根据浏览器输出内容仔细调试。