当前位置: 首页 > news >正文

chromium魔改——CDP(Chrome DevTools Protocol)检测01

在进行以下操作之前,请确保已完成之前文章中提到的 源码拉取及编译 部分。

如果已顺利完成相关配置,即可继续执行后续操作。


环境检测网站,https://www.browserscan.net/bot-detection,这是一个检测机器人的网站,检测点很多,可以用来验证自己当前的环境是否正常。

正常打开的状态是这样的,说名环境正常,测试通过

在这里插入图片描述

这是非正常状态,就会显示Test Results:Robot,说明知道我们在试图调试

在这里插入图片描述
在这里插入图片描述

当我们打开网站之后,再打开devtool调试工具,然后再刷新,并且devtool与窗口即便分离状态下,它依然能检测到,通过分析网站源码,发现他的检测位置是在这里,至于如何分析出他的检测点,这里就先略过,不是本章要说的内容。

在这里插入图片描述

实现CDP检测

以下是一个简化案例,还原了它的检测过程,我们先通过正向的角度分析完,然后再通过逆向去绕过。

将下面这段代码保存为cdp.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0">
    <title>Chrome DevTools Protocol Detection</title>
</head>
<body>
    <div id="cdp">devTool:<b id="status"></b></div>
    <script>
        const hook = new Error()
        let num = -1
        Object.defineProperty(hook, "stack", {
            get: function () {
                num += 1
                document.getElementById('status').innerText = num ? '打开了' : '关闭了'
                return num;
            }
        });
        function isOpenDevTool() {
            num = -1
            console.debug(hook);
            hook.stack
            requestAnimationFrame(isOpenDevTool);
        }
        requestAnimationFrame(isOpenDevTool);
    </script>
</body>
</html>

正常浏览器中,当我们打开devtool的时候,他就会检测到打开,关闭的时候就会显示关闭

在这里插入图片描述

这段代码的检测能力非常强,我们尝试用自动化框架去打开cdp.html,即便我们不打开devtool,他也会检测到你是机器人。

在这里插入图片描述

通过查阅MD文档,了解一下console.debug这个API的原理

在这里插入图片描述

知道了原理之后,我们就可以修改chromium的源码实现绕过了。

源码怎么找,思路是这样的,首先你要确定这个api是属于哪一类,console我们知道,他是一个很底层的api,所有什么浏览器也好,electron,nodejs也好,他都有一个共同的引擎,就是v8,所以,我们直接在chromium的源码中再他的v8文件夹下找就可以,然后找到console的实现,再进行分析和修改。

先根据官方目录去查关键字,然后一个一个检查

修改的位置在这里

/src/v8/src/inspector/v8-console.cc

在这里插入图片描述

我们只需要空实现这个函数即可,直接将实现部分注释掉

在这里插入图片描述

然后运行以下代码完成编译

autoninja -C out/Default chrome

然后再通过自动化程序测试,可以看到是正常了

在这里插入图片描述


文章转载自:
http://catamount.hyyxsc.cn
http://chou.hyyxsc.cn
http://capulet.hyyxsc.cn
http://apathetically.hyyxsc.cn
http://ament.hyyxsc.cn
http://aristaeus.hyyxsc.cn
http://candy.hyyxsc.cn
http://alveolar.hyyxsc.cn
http://callipers.hyyxsc.cn
http://attending.hyyxsc.cn
http://barcarolle.hyyxsc.cn
http://bullyboy.hyyxsc.cn
http://brachycephalic.hyyxsc.cn
http://abnaki.hyyxsc.cn
http://alcmene.hyyxsc.cn
http://boulle.hyyxsc.cn
http://broadcasting.hyyxsc.cn
http://barong.hyyxsc.cn
http://checksummat.hyyxsc.cn
http://allopolyploidy.hyyxsc.cn
http://carnivorous.hyyxsc.cn
http://aviarist.hyyxsc.cn
http://blodge.hyyxsc.cn
http://antagonistical.hyyxsc.cn
http://aryan.hyyxsc.cn
http://casually.hyyxsc.cn
http://askari.hyyxsc.cn
http://campagna.hyyxsc.cn
http://aspirer.hyyxsc.cn
http://bimane.hyyxsc.cn
http://www.dtcms.com/a/111401.html

相关文章:

  • CCF GESP C++编程 八级认证真题 2025年3月
  • MySQL 性能调优:数据库的极限运动训练
  • [ deepseek 指令篇章 ]300个领域和赛道喂饭级deepseek指令
  • 【数论】 质数
  • 【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录
  • RFC6937 PRR 的兑换细节
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • AWS数据分析全栈实战(Redshift+SageMaker)
  • MYOJ_4576:(洛谷P1032)[NOIP 2002 提高组]字串变换(BFS提高)
  • 低成本训练垂直领域文娱大模型的技术路径
  • SCADE 6: 面向高安全软件开发的基于模型的解决方案
  • 【每日一个知识点】隐私计算:概念、技术、应用及发展趋势
  • GORM 中 CURD 操作用法详解
  • 7.训练篇5-毕设
  • 数字内容体验的未来方向是什么?
  • 图形渲染中的定点数和浮点数
  • 智慧放羊如何实现?
  • Python设计模式:克隆模式
  • 音视频入门基础:RTP专题(21)——使用Wireshark分析海康网络摄像机RTSP的RTP流
  • LeetCode 1123.最深叶节点的最近公共祖先 题解
  • Runnable组件动态添加默认调用参数
  • 基于SpringBoot框架发生验证码
  • 【Docker项目实战】使用Docker部署MediaCMS内容管理系统
  • 脑影像分析软件推荐 | BCT(Brain Connectivity Toolbox)
  • c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第四式】自定义类型详解(结构体、枚举、联合)
  • Windows 11 听的见人声,但是听不见背景音乐或者听不见轻音乐等,可以这样设置
  • 【橘子大模型】Runnable和Chain以及串行和并行
  • STM32 HAL库 CANFD配置工具
  • 小程序API —— 58 自定义组件 - 创建 - 注册 - 使用组件
  • CExercise_04_1运算符_6 (扩展) 找出数组中只出现一次的唯二元素