首页 > 其他分享 >使用代理打印浏览器环境 代码环境 吐环境

使用代理打印浏览器环境 代码环境 吐环境

时间:2023-12-11 09:35:08浏览次数:26  
标签:function 浏览器 env script 打印 环境 eval return property

1.js 打印浏览器环境

var eval_env_script = "";
var all_eval_env_script = "";
var base_script = "";
//常用的proxy_array(按照"_"规范填写,后面会进行解析)
var proxy_array = ["window", "window_document", "window_location", "window_navigator", "window_history"];

function vmProxy(object) {
    return new Proxy(object, {

        set: function (target, property, value) {
            console.log("set", target, property, value);
            return Reflect.set(...arguments);
        },
        get: function (target, property, recelver) {
            console.log("get", target, property, target[property]);
            if (target[property] == undefined) {
                //拼接脚本
                eval_env_script = target.name.replaceAll("_", ".") + '.' + property;
            }
            return target[property];
        },

    });
}

for (var i = 0; i < proxy_array.length; i++) {
    var proxy_function = proxy_array[i].replaceAll("_", ".");
    base_script += proxy_function + ' = ' + '{};\r\n';
    eval(proxy_function + ' = ' + 'vmProxy(function ' + proxy_array[i] + '(){})');
}

function get_env_script(source_js_code, count) {
    //最多循环conut次,防止一直无法得到环境
    for (var i = 0; i < count; i++) {
        try {
            eval(source_js_code);//需要补环境的js
            break;//成功后退出循环
        } catch (err) {
            if (err.message.indexOf('Cannot read') != -1) {
                eval_env_script += ' = "";';
            } else if (err.message.indexOf('is not a function') != -1) {
                eval_env_script += ' = function() {return {};}';
            }
            eval(eval_env_script);
            all_eval_env_script += "\r\n" + eval_env_script;
        }
    }
    all_eval_env_script = base_script + all_eval_env_script;
    console.log("result: \r\n" + all_eval_env_script);
    return all_eval_env_script;

}


get_env_script(`window.name="name"`, 10)

2.js 打印浏览器环境

(function() {   // hook随机数
    'use strict';
    Date.now = function now() { return 1699237962590 };
    Date.parse = function () { return 1699237962590 };
    Date.prototype.valueOf = function () { return 1699237962590 };
    Date.prototype.getTime = function () { return 1699237962590 };
    Date.prototype.toString = function () { return 1699237962590 };
    Math.random = function random() { return 0.08636862211354912 };
})();


window = new Proxy(window, {   // 代理window 方便查看日志
    set(target, property, value, receiver) {
        console.log("设置属性set window", property, typeof value);
        return Reflect.set(...arguments);
    },
    get(target, property, receiver) {
        console.log("获取属性get window", property, typeof target[property]);
        return target[property]
    }
});
 
function proxy (proxy_array) {   // 异常报错前断住
    for (let i=0; i<proxy_array.length; i++){
        eval(proxy_array[i] + `= new Proxy(` + proxy_array[i] + `, {
            get(target, key) {
              if(key == '你需要debugger的属性'){
                debugger;
              }
              console.log('----------------------')
              // console.log( '【` + proxy_array[i]+ `】取属性 ' + key + ', 详细位置debugger查看');
              // target[key] 为某些对象时, 拼接字符串会异常,如 window['document']
              console.log( '【` + proxy_array[i]+ `】取属性 ' + key + ' 值: ' + target[key] + ', 详细位置debugger查看');
              console.log('----------------------')
              return target[key];
            }
        });`)
    }
};
// 数组中放入需要代理的对象
var proxy_array = ['document', 'navigator','location'];
proxy(proxy_array);;

  

 

标签:function,浏览器,env,script,打印,环境,eval,return,property
From: https://www.cnblogs.com/yoyo1216/p/17893676.html

相关文章

  • 抓取真实浏览器设备指纹fingerprint写入cookie方案
     今天分享一个关于抓取真实浏览器设备指纹写入cookie方案,用户访问页面获取到用户设备生成指纹id,通过js把指纹存入cookie,然后用php进行获取cookie存的指纹值到后台。上写法: 首页在前端页面js引入:<!--引入浏览器指纹!--><script>functiongetCookie(name){varcook......
  • 网安靶场环境_DVWA-读取文件报错File not found! Cookie中有两个security键
    DVWA-文件包含漏洞-读取文件报错-ERROR:Filenotfound!Cookie中有两个security键1问题复现(1)登录DVMA后,设置DVWASecurity为Low。 (2)进入FileInclusion,访问dvwa/vulnerabilities/fi目录下的的test.txt文件(自己创建的测试文件)。 (3)报错ERROR:Filenotfound!找不到文......
  • 无涯教程-MFC - 环境设置
    MicrosoftVisualC++是用于为MicrosoftWindows操作系统创建应用程序的编程环境。要在C++应用程序中使用MFC框架,必须已安装MicrosoftVisualC++或MicrosoftVisualStudio,MicrosoftVisualStudio还包含MicrosoftVisualC++环境。Microsoft提供了VisualStudio的免费版......
  • CentOS(7.6)环境下迁移Mysql(5.7)的data目录到指定位置
    第一步:关闭Mysql#关闭Mysql服务systemctlstopmysqld#查看Mysql服务状态ps-ef|grepmysql 第二步:创建新目录,并拷贝数据文件#创建data文件目录mkdir/data/mysql/data/#给mysql账号赋权chown-Rmysql:mysql/data/mysql/data/#拷贝数据到data文件下cp-a/var/lib/m......
  • 中国钢铁行业环境会计信息披露的研究——LW
    目 录摘 要........................................................I目 录........................................................Ⅱ第一章绪 论..................................................11.1研究背景和研究意义...............................
  • RISC-V 环境搭建问题----1
    在此记录一下搭建开源Vivado-risc-v项目时所遇到的一些问题本来已经弄好的差不多了,最后一看,下载的别人网盘的,版本落后了,只支持到vivado2022.1....只好重新拉一下最新的,又踩雷无数。1.wls2进行gitclone时连接拒绝原文:Ubuntu20.4WSL2无法访问github终极解决方案_ubuntug......
  • 无涯教程-LINQ - 环境设置
    在开始LINQ程序之前,最好首先了解设置LINQ环境的细微差别,LINQ需要一个.NET框架,这是一个革命性的平台,可以具有多种应用程序,LINQ查询可以方便地用C#或VisualBasic编写。Microsoft通过VisualStudio提供了针对这两种语言的工具,即C#和VisualBasic。无涯教程的示例都是在VisualSt......
  • 基于Docker容器搭建hadoop完全分布式集群环境
    简介物理机:windows10宿主机:Centos7虚拟机,需要安装Docker服务hadoop集群节点:3个centos7的容器,hadoop1、hadoop2、hadoop3组件:容器镜像:Centos7DockerCE24.0.7JDK1.8.0_181Hadoop3.1.31.新建虚拟机安装CentOS72.安装Docker2.1安装docker服务yum-yinstalldocke......
  • MDM介绍:5. 悄悄安装上打印机macOS
    虽然越来越多的人提倡无纸化办公,但难免有材料需要以纸质的形式呈现出来,打印机依旧是日常办公中不可或缺的外围设备,添加打印机也是IT部门要做的一件简单但是不得不做的事情。除此之外还有电脑中打印机的卸载,故障排除等。添加一台打印机(包括安装相应驱动文件)可能需要3-5分钟,你可能觉......
  • Java打印进度条
    packagecom.shuwei.dai.utils.bitmap;importjava.util.Collections;publicclassStepProgressBarExample{publicstaticvoidmain(String[]args){simulateStep("Step1:Initializing",10);simulateStep("Step2:Download......