魔改chromium源码——navigator.webdriver 检测

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

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


chromium源码官网 https://source.chromium.org/chromium/chromium/src

说下修改的chromium源码思路:

首先在修改源码过检测之前,我们要知道它是怎么检测的,找到他通过哪个JS的API来做的检测,只有知道了如何检测,我们才能想办法去绕过,俗话说,知己知彼百战百胜嘛!

绕过 navigator.webdriver 检测

在浏览器中环境对抗的时候,会通过 navigator.webdriver 来检测是否为自动化在控制网站,如果返回为true,则表示是自动化在控制,否则不是,所以我们只需要将他的返回值永远返回false即可

自动化控制返回的值 在这里插入图片描述

正常浏览器返回的值 在这里插入图片描述

在chromium源码中,找到以下路径

sh
复制代码
\src\third_party\blink\renderer\core\frame\navigator.cc

有以下两种修改方式,选其中一种即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改完之后保存代码即可,在修改的时候不要将原始代码删除,注释即可方便出错的时候查问题。

保存好了之后,运行以下命令,这个命令就是前面编译章节中的编译命令,你当时编译的时候用的是什么,这里就写什么,他不是重新编译,是增量编译,只对新增的内容进行编译,所以速度会快很多。

sh
复制代码
autoninja -C out/Default chrome <img src="https://pic.code-nav.cn/post_picture/1922184057994162177/XMb2pHdURJPFdEtR.webp" alt="在这里插入图片描述" width="100%" /> ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3cb7167285ac498885a24894a38f5e01.png) 编译好之后,通过自动化程序检测一下 我们这里使用 playwright 来测试 ```python from playwright.sync_api import sync_playwright def run(): with sync_playwright() as p: browser = p.chromium.launch( executable_path="E:\my_code\chromium\src\out\Default\chrome.exe", headless=False ) # 创建一个新的浏览器上下文 context = browser.new_context() # 打开一个新页面 page = context.new_page() # 访问目标网站 page.goto("https://www.baidu.com") # 等待用户输入后再关闭浏览器 input("Press Enter to close the browser...") # 关闭浏览器 browser.close() if __name__ == "__main__": run()

可以看到是已经成功了 在这里插入图片描述 在这里插入图片描述

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP