环境准备

  • Windows 10 Pro 2004 (19041.329)
  • Visual Studio 2019
    • “使用 C++ 的桌面开发”
    • C++ v14.25 ATL for v142 生成工具(x86 和 x64)
    • C++ v14.25 MFC for v142 生成工具(x86 和 x64)
  • Windows 10 SDK (SDK 版本不能小于10.0.19041)
    • “Debugging Tools for Windows”
  • Git
  • 存储源码的空间至少 50 GB

步骤

下载编译工具包

下载 depot_tools

配置环境变量

因为工具包本身携带了python,为了避免系统的python影响导致失败。
在系统环境变量中配置工具包的路径,务必保证在最前面。

另外需要添加一个系统变量

1
DEPOT_TOOLS_WIN_TOOLCHAIN=0

获取源码

进入目录后使用命令

1
fetch chromium

此处大约需要半个多小时吧…
根据个人网络情况有所不同 完成后的目录结构

执行完成后执行

1
gclient sync --force

切换版本

因为每天都有很多commit进入master分支,我们需要是对应自己需要的版本来编译ChromeDriver。
所以根据自己安装的Chrome或者是需要的版本来编译。

首先进入 src 目录,执行下面的命令

1
2
3
4
gclient sync --with_branch_heads --with_tags
git fetch --tags
git checkout -b ChromeDriver tags/84.0.4147.85
gclient sync --with_branch_heads --with_tags

编译测试

进入src目录,执行配置文件生成命令

1
gn gen out/Release -args="is_debug=false"

此命令是生成正式版本的,先生成一次确认一下环境和其他是否有问题
接着开始编译

1
ninja -C out\Release chromedriver -j16

其中 “-jN” 根据你CPU的核心数量定义
编译过程在我 AMD 3700X 的机器上耗时 10 分钟左右,具体时间需要根据机器配置来。

(十分消耗资源呢….)

完成后,文件在 src\out\Release 中。
测试可以正常执行就就可以下一步了

修改特征

特征文件路径:src\chrome\test\chromedriver\js\call_function.js

这里的 “cdc_asdjflasutopfhvcZLmcfl_” 就是多数验证滑块检测是否由ChromeDriver驱动的地方。
一般是通过下面的方法来断定

1
console.log(window["$cdc_asdjflasutopfhvcZLmcfl_"]||document["$cdc_asdjflasutopfhvcZLmcfl_"]?true:false);

我们直接把这串改成别的随机串即可。例如 “CXsHPv8coH9i2iO8uWXRremABR_”

然后在根据上一个步骤去编译,成功后测试就会发现已经无法检测出特征了。