015.chromium源码修改-绕过cdp检测-出售成品

一、cpd检测是什么

  • 开发者工具协议(Chrome DevTools Protocol,就简称CDP)
  • cdp检测(Chrome DevTools Protocol Detection),是许多网站常用的机器人检测手段之一。通常是利用浏览器开发者工具的进行的功能检测或漏洞探测。
  • 当每次打开F12控制台,或者使用selenium,puppeteer之类的自动化工具打开网页,都会被识别成机器人。这种情况基本就是因为有cpd检测。

二、cdp检测原理

  • cdp检测的原理一般是利用console.debug()函数来实现,当你打开consle控制台时,console.debug()才会真正的被调用。
  • 一旦console.debug()函数被触发,我们就可以认定你打开了F12控制台。

三、代码实现cdp检测

  • 编写一个html文件,随便取名111.html。
<!DOCTYPE html>
<html><head><title>Detect Chrome DevTools Protocol</title><script>function genNum(e) {return 1000 * e.Math.random() | 0;}function catchCDP(e) {if (e.chrome) {var rng1 = 0;var rng2 = 1;var acc = rng1;var result = false;try {var errObj = new e.Error();var propertyDesc = {configurable: false,enumerable: false,get: function () {acc += rng2;return '';}};Object.defineProperty(errObj, "stack", propertyDesc);console.debug(errObj);errObj.stack;if (rng1 + rng2 != acc) {result = true;}} catch {}return result;}}function isCDPOn() {if(!window)return;const el = document.querySelector('span#status');if(!el)return;el.innerText = catchCDP(window) ? "yes":"no";}function init() {isCDPOn();setInterval(isCDPOn, 100);}document.addEventListener("DOMContentLoaded", init);</script>
</head><body><p>CDP Detected: <span id="status">-</span></p>
</body></html>
  • 这个html很吊,每次打开F12,或者使用selenium,puppeteer之类的自动化工具打开这个页面,都会被识别成机器人。

四、修改源码绕过cdp检测

  • 第一篇文章写了如何编译chromium,假设你已经编译成功了。
  • 找到源码:\v8\src\inspector\v8-console.cc
1.找到下面的代码
void V8Console::Debug(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Debug");ConsoleHelper(info, consoleContext, m_inspector).reportCall(ConsoleAPIType::kDebug);
}void V8Console::Error(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Error");ConsoleHelper(info, consoleContext, m_inspector).reportCall(ConsoleAPIType::kError);
}void V8Console::Info(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Info");ConsoleHelper(info, consoleContext, m_inspector).reportCall(ConsoleAPIType::kInfo);
}
2.替换为
void V8Console::Debug(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {//TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Debug");//ConsoleHelper(info, consoleContext, m_inspector)//    .reportCall(ConsoleAPIType::kDebug);
}void V8Console::Error(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {//TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Error");//ConsoleHelper(info, consoleContext, m_inspector)//    .reportCall(ConsoleAPIType::kError);
}void V8Console::Info(const v8::debug::ConsoleCallArguments& info,const v8::debug::ConsoleContext& consoleContext) {//TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.inspector"), "V8Console::Info");//ConsoleHelper(info, consoleContext, m_inspector)//    .reportCall(ConsoleAPIType::kInfo);
}
3.编译
ninja  -C  out/Default chrome

五、在线指纹验证网站:

  • https://fingerprint.com/products/bot-detection/
  • https://www.browserscan.net/bot-detection

六、出售成品

博客是全部开源的,但有些同学还是比较懒,想直接要成果。不花时间就得花钱,我将之前的博客内容全部跑了一遍,做了个成品。给我一点点激励呗!

链接: https://dwz.cn/KOweICeK

成品功能:
  • 可绕过 browserleaks.com 的指纹检测
  • 可绕过 www.browserscan.net 的指纹检测
  • 可绕过 https://ip77.net/ 的指纹检测
  • 可绕过cdp检测
  • creepjs跑分为 D-

注意:随机指纹浏览器只用于爬虫,目前只有windows版本,没有固定指纹的功能,且会有视频,声音无法播放的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT专业入门:高考假期预习指南

IT专业入门&#xff1a;高考假期预习指南 方向一&#xff1a;基础课程预习指南 在IT领域&#xff0c;基础知识的掌握至关重要。以下是一些基本课程和知识点&#xff0c;帮助你在正式进入大学前有所准备&#xff1a; 计算机科学导论&#xff1a;理解计算原理、计算机组成以及…

【C++】——【 STL简介】——【详细讲解】

目录 ​编辑 1. 什么是STL 2. STL的版本 3. STL的六大组件 1.容器(Container)&#xff1a; 2.算法(Algorithm)&#xff1a; 3.迭代器(Iterator)&#xff1a; 4.函数(Function)&#xff1a; 5.适配器(Adapter)&#xff1a; 6.分配器(Allocator)&#xff1a; 4. STL的…

调度器APScheduler定时执行任务

APScheduler&#xff08;Advanced Python Scheduler&#xff09;是一个Python库&#xff0c;用于调度任务&#xff0c;使其在预定的时间间隔或特定时间点执行。它支持多种调度方式&#xff0c;包括定时&#xff08;interval&#xff09;、日期&#xff08;date&#xff09;和Cr…

探索IT世界的第一步:高考后的暑期学习指南

目录 前言1. IT领域概述1.1 IT领域的发展与现状1.2 IT领域的主要分支1.2.1 软件开发1.2.2 数据科学1.2.3 网络与安全1.2.4 系统与运维 2. 学习路线图2.1 基础知识的学习2.1.1 编程语言2.1.2 数据结构与算法 2.2 实战项目的实践2.2.1 个人项目2.2.2 团队项目 2.3 学习资源的利用…

综合项目实战--jenkins流水线

一、流水线定义 软件生产环节,如:需求调研、需求设计、概要设计、详细设计、编码、单元测试、集成测试、系统测试、用户验收测试、交付等,这些流程就组成一条完整的流水线。脚本式流水线(pipeline)的出现代表企业人员可以更自由的通过代码来实现不同的工作流程。 二、pi…

Python实战,桌面小游戏,剪刀石头布

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程: Python项目开发实战_桌面小游戏-剪刀石头布_编程案例解析实例详解课程教程.pdf 创建一个基于Python的桌面小游戏“剪刀石头布”是一个很好的编程实践…

C++ 识别 .lua文件内用户自定义的全局函数

摘要&#xff1a; 此系列是为经手的项目介绍编译和使用&#xff0c;以及项目开发过程中遇到的bug解决方案或项目开发过程中有意思的需求设计等等项目相关的博文。 此篇是为开发自定义界面项目过程中系统页面与脚本交互的一个小需求&#xff0c;系统导入用户自己编写的.lua脚本文…

气膜建筑照明:吊式与落地灯杆的利弊—轻空间

气膜建筑以其独特的设计和高效的功能性&#xff0c;广泛应用于体育场馆、工厂等各类场所。在这些气膜建筑中&#xff0c;照明方式的选择尤为重要。尽管有多种照明方式可供选择&#xff0c;但常用的反射光源形式在气膜建筑中尤为普遍。轻空间将重点介绍两种常用的反射照明方式&a…

Node端使用工作线程来解决日志开销-处理IO密集型任务

我们的BBF层很多时候会作为中间层处理后端到前端的数据&#xff0c;当然大部分时候都只是作为请求 / 响应的数据组装中心&#xff0c;但是有一个插件是怎么都绕不过去的&#xff1a;Log4js。 内部我们在Node层打印了很多日志。结果这周仔细分析了一下服务器处理请求到响应的中间…

Linux中vim文本编辑器你了解多少?

在Linux中&#xff0c;vim&#xff08;Vi IMproved&#xff09;是一个非常强大的文本编辑器&#xff0c;它基于更古老的vi编辑器&#xff0c;并添加了许多增强功能。vim有几种不同的模式&#xff0c;包括命令模式、插入模式和可视模式&#xff0c;每种模式都有特定的功能和快捷…

音乐:触动心灵的艺术语言

Enjoy your music 音 乐 作为一种跨越时空和文化的艺术形式&#xff0c;拥有着无穷的魅力和力量。 它不仅能够带给我们愉悦的听觉享受&#xff0c;还对我们的身心健康、认知发展和社会交往产生着深远的影响。 一、音乐的基本元素 音乐由多个基本元素构成&#xff0c;包括…

【CentOS7.6】yum 报错:Could not retrieve mirrorlist http://mirrorlist.centos.org

一、报错 1.报错内容如下 在使用 yum makecache 命令时报错&#xff0c;在 yum install -y xxx 的时候报错等等 [roothcss-ecs-a901 yum.repos.d]# yum makecache Loaded plugins: fastestmirror Determining fastest mirrors Could not retrieve mirrorlist http://mirrorl…

Linux 常见的几种编辑器的操作步骤

在大多数命令行文本编辑器中&#xff0c;保存并关闭文件的操作方式基本相似。以下是常见的几种编辑器的操作步骤&#xff1a; 使用 vi 编辑器保存并关闭文件 编辑文件&#xff1a; sudo vi /path/to/file 编辑内容&#xff1a; 按 i 进入插入模式&#xff0c;编辑文件内容。 …

Go 语言条件语句

Go 语言条件语句 在编程语言中&#xff0c;条件语句用于根据特定条件执行不同的代码路径。Go 语言提供了几种条件语句&#xff0c;包括 if、switch 和 select。这些语句使得程序可以根据不同的条件执行不同的操作&#xff0c;从而实现程序的逻辑分支。 1. if 语句 if 语句是…

【web APIs】快速上手Day03

目录 Web APIs - 第3天全选文本框案例事件流事件捕获事件冒泡阻止冒泡解绑事件on事件方式解绑addEventListener方式解绑 注意事项-鼠标经过事件的区别两种注册事件的区别 事件委托综合案例-tab栏切换改造 其他事件页面加载事件元素滚动事件页面滚动事件-获取位置页面滚动事件-滚…

巴西东南湾乌巴图巴 ANTARES 监测站数据

ANTARES monitoring station in Ubatuba, Southeast Brazilian Bight 巴西东南湾乌巴图巴 ANTARES 监测站 简介 ANTARES 区域网络由分布在拉丁美洲的沿岸时间序列站组成。主要目的是研究气候和人为影响引起的长期变化&#xff0c;以及用于卫星匹配和算法开发的海洋颜色。Uba…

SoftCLT: 时间序列的软对比学习《Soft Contrastive Learning for Time Series》(时间序列、时序分类任务、软...

2024年6月25日&#xff0c;10:11&#xff0c;好几天没看论文了&#xff0c;一直在摸鱼写代码(虽然也没学会多少)&#xff0c;今天看一篇师兄推荐的。 论文&#xff1a; Soft Contrastive Learning for Time Series 或者是&#xff1a; Soft Contrastive Learning for Time Seri…

[C++][设计模式][组合模式]详细讲解

目录 1.动机(Motivation)2.模式定义3.要点总结4.代码感受 1.动机(Motivation) 软件在某些情况下&#xff0c;客户代码过多地依赖于对象容器复杂的内部实现结构&#xff0c;对象容器内部实现结构(而非抽象结构)的变化引起客户代码的频繁变化&#xff0c;带来了代码的维护性、扩…

【Android面试八股文】什么是ANR?如何分析和定位ANR?如何避免ANR?

文章目录 一、ANR概述二、触发ANR的主要场景三、Android四大组件中的潜在的ANR风险五、避免ANR的实践建议六、ANR的产生原因与出现的场景6.1 原因:6.2 出现场景:七、ANR的定位与分析7.1. ANR分析思路——traces7.2 ANR其他分析思路与相关日志7.2.1 分析logcat思路7.2.2 分析k…

解释Java中的Java IO流模型。

Java IO流模型是Java中用于处理输入和输出的基础模型。它通过一组类和接口来实现文件、网络和其他I/O设备的读写操作。Java IO流模型主要包括以下几个部分&#xff1a; 1. **InputStream和OutputStream**&#xff1a;这些类是Java IO的核心&#xff0c;它们提供了一种抽象的方…