欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 015.chromium源码修改-绕过cdp检测-出售成品

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

2024/10/23 19:33:59 来源:https://blog.csdn.net/w1101662433/article/details/140098816  浏览:    关键词: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版本,没有固定指纹的功能,且会有视频,声音无法播放的情况

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com