Table of Contents:
  1. 补环境框架:sdenv版本更新V0.2.0
    1. 1. 去除单例创建实例方式
      1. 2. 完善chrome浏览器拟真
        1. 3 样例文件调整

        补环境框架:sdenv版本更新V0.2.0

        Reading Time:The full text has 635 words, estimated reading time: 4 minutes
        Creation Date:2024-04-16
        Article Tags:
         
        BEGIN

        sdenv介绍: 基于jsdom和瑞数vmp开发的补环境框架,模拟浏览器执行网页代码。 对瑞数vmp原理感兴趣的可以参考作者另一个开源项目:rs-reverse(见github仓库)

        https://github.com/pysunday/sdenv 🔗

        此处版本更新,代码不向下兼容,sdenv版本为V0.2.0对应sdenv-extend版本为V1.3.0,更新改动如下:

        1. 去除单例创建实例方式;
        2. 增加完善chrome浏览器拟真,window.Eventwindow.XPathExceptionwindow.prompt的检测处理,恢复window.webkitRequestFileSystem相关代码;
        3. 样例文件调整。

        1. 去除单例创建实例方式

          在之前版本中,实例化sdenv后,由于同时赋值给Object.prototype.sdenv,因此可以通过new SdenvExtend().sdenv()或者Object.sdenv都可以取到同一个sdenv对象,因此sdenv对象在程序整个生命周期内只会存在一个,这种单例实例化方式虽然可以给代码编写提供方便,但是如果要有新的任务时却只能通过运行新node命令实现,这在sdenv项目中是不合理的,但是在rs-reverse这种命令行工具是没有影响的。

          因此通过同步升级sdenv-extend将实例化的sdenv对象复制到window变量中,然后在chrome端做兼容处理:

        if (!window.sdenv) window.sdenv = new SdenvExtend();

          需要注意的是,当给window赋予新属性值时会改变原有运行流程,但是不影响最终产生的cookie结果,所以通过合理剪枝可以大大减少原代码中逻辑量(可以减少60%的循环逻辑量)。

        2. 完善chrome浏览器拟真

          当前版本sdenv增加chrome环境补充,增加对window.Eventwindow.XPathExceptionwindow.prompt的检测处理。

          作者希望项目受益者不做伸手党,帮助完善项目,当前sdenv仍然只支持chrome浏览器的拟真,作者希望牛人们能一起完善其它浏览器,如Firefox、Safari等。

          其它浏览器拟真可在chrome同级新建目录,如:./browser/firefox/,引入并使用浏览器拟真示例:

        const browser = require('sdenv/browser/');
        browser(window, 'chrome');

        3 样例文件调整

          群里有牛人反馈example下使用了process.exit方法退出程序不适合在真实环境中使用,因此将该方法改为window.close方法,需要注意的是example目录为样例目录,代码仅供参考,牛人们可以参考example下的代码更方便得使用sdenv提供的api实现想要的功能。

          同时作者优化example/use-remote代码以验证cookie的有效性,执行该样例代码结果如下:

        执行结果

        FINISH

        Random Articles
        Life Countdown
        default