首页 > 其他分享 >如何解决toString检测?

如何解决toString检测?

时间:2024-08-01 11:17:49浏览次数:5  
标签:function myFunction set 检测 toString func 解决 native

  对于 一些浏览器环境检测时,比较常见的toString方法检测,查看函数方法是否修改,从而来检测爬虫行为,以下是一种过toString检测的方法。

1、修改toString方法。

  代码如下:

(() => {
    "use strict";
    const $toString = Function.toString();
    const myFunction_toString_symbol = Symbol('('.concat('',')_', (Math.random() + '').toString(36)));
    const myToString = function(){
        return typeof this == 'function' && this[myFunction_toString_symbol] || $toString.call(this);
    };
    function set_native(func, key, value){
        Object.defineProperty(func, key, {
            "enumerable": false,
            "configurable": true,
            "writable": true,
            "value": value
        })
    };
    delete Function.prototype['toString']; // 删除原型链上的toString
    set_native(Function.prototype, "toString", myToString); // 自己定义个getter方法
    set_native(Function.prototype.toString, myFunction_toString_symbol, "function toString() { [native code] }"); // 套个娃 保护一下我们定义的toString 否则就暴露了
    this.func_set_native = (func) => {
        set_native(func, myFunction_toString_symbol, `function ${myFunction_toString_symbol,func.name || ''}() { [native code] }`);
    }; // 导出函数到globalThis
    }).call(this);

2、修改指定的toString函数

window.open = function open(){}

3、调用修改测试

this.func_set_native(window.open)
console.log(window.open.toString())

  结果如下:

标签:function,myFunction,set,检测,toString,func,解决,native
From: https://www.cnblogs.com/LoLong/p/18336262

相关文章

  • 三种语言实现双指针解决数组元素的目标和(C++/Python/Java)
    题目给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i]+B[j]=x的数对(i,j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数......
  • 服务器LSI9361 RAID卡更换为BCM9560 RAID卡重启系统蓝屏解决方法
    一、问题现象服务器配LSI9361RAID卡,安装的系统为WindowsServer2022、2019、2016时。当LSI9361RAID卡故障后,使用BCM9560RAID卡替代后,无法进入系统后。报错提示如下图:二、解决方法 2.1 WindowsServer2022系统1、服务器启动时按F8键,选择“安全模式”进入系统。2......
  • 【全网独家】OpenCV 图像特征检测与描述(Harris 角点检测、Shi-Tomasi 角点检测、SIFT
    OpenCV图像特征检测与描述在图像处理和计算机视觉中,特征检测和描述是非常重要的任务。本文将介绍几种常用的特征检测和描述方法:Harris角点检测、Shi-Tomasi角点检测、SIFT和SURF。目录介绍应用使用场景原理解释算法原理流程图及解释应用场景代码示例实现部署......
  • 学生论文降痕烦恼?笔灵去AI痕迹学生版,一键解决烦恼少
    在当今时代,伴随着人工智能论文工具的广泛应用,学生们在追求论文原创性的道路上遇到了新的挑战:如何在确保文章独创性的同时,有效减少人工智能生成内容(AIGC)的痕迹。为此,笔灵AI应运而生,它凭借其独到的功能和便捷的操作,成为学术探索者在学海中乘风破浪的得力助手。通过其辅助,每一篇学......
  • 解决python自动化操作异常处理的问题
    在python自动化领域,往往要用到pyautogui,pywin32等模块实现自动化操作。然而,这种自动化操作,本身具有一定的局限性,其中最主要的一个问题就是,一旦执行结果不按照脚本预设的来执行,往往会抛出异常,导致程序中断。解决这个问题,主要有这么几种思路:第一,每一次操作后分情况讨论。这种方......
  • 在 Hub 上使用 Presidio 进行自动 PII 检测实验
    我们在HuggingFaceHub上托管的机器学习(ML)数据集中发现了一个引人关注的现象:包含个人未经记录的私密信息。这一现象为机器学习从业者带来了一些特殊挑战。在本篇博客中,我们将深入探讨含有一种称为个人识别信息(PII)的私密信息的各类数据集,分析这些数据集存在的问题,并......
  • bash: llamafactory-cli: command not found解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • Dependency Injection: 如何解决依赖注入失败问题
    DependencyInjection:如何解决依赖注入失败问题......
  • qtui更改后报错:-1: error: [Makefile.Debug:7745: ui_widget.h] Error 1,如何解决?
    qtui更改后报错:-1:error:[Makefile.Debug:7745:ui_widget.h]Error1,如何解决?在使用Qt开发时,遇到-1:error:[Makefile.Debug:7745:ui_widget.h]Error1这样的错误通常是因为ui_widget.h文件未能正确生成。这个文件是由Qt的uic(用户界面编译器)工具生成的......
  • 暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法
    暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法暗区突围也可以在电脑上游玩拉,暗区突围PC端上线在即,本次上线就是全球抢先测试了,很多小伙伴在游戏下载过程中遇到了很多问题,比如:下载失......