You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Windows编译Chromium源码后出现的「Pardon the Interruption」错误

解决Windows编译Chromium遇「Pardon the Interruption」拦截的源码修改方案

网站的拦截逻辑不止看User-Agent,还会校验Chromium的平台特征指纹——自行编译的Windows版Chromium,和Edge、官方Chrome这类商用Chromium浏览器的指纹差异太大,才会被判定为异常客户端。下面是具体的源码修改点:

一、修正浏览器品牌标识(Brand List)

现在很多网站会通过navigator.userAgentData.brands识别浏览器,自行编译的Chromium默认品牌列表和官方Chrome不一样,直接修改这个:

  • 目标文件:third_party/blink/renderer/core/frame/navigator_user_agent.cc
  • 定位到NavigatorUAData::GetBrands()方法,把返回的品牌数组替换为和官方Chrome一致的内容:
    Vector<mojom::blink::BrandVersionPtr> NavigatorUAData::GetBrands() const {
      Vector<mojom::blink::BrandVersionPtr> brands;
      brands.emplace_back(mojom::blink::BrandVersion::New(" Not A;Brand", "99"));
      brands.emplace_back(mojom::blink::BrandVersion::New("Chromium", "118"));
      brands.emplace_back(mojom::blink::BrandVersion::New("Google Chrome", "118"));
      return brands;
    }
    
    版本号对应你编译的Chromium版本,或者直接使用当前稳定版Chrome的版本号。

二、统一系统平台指纹

网站还会读取navigator.platform、navigator.oscpu,自行编译的版本可能返回原始标识,改成官方Chrome的标准值:

  • 目标文件:third_party/blink/renderer/core/frame/navigator.cc
  • 修改Navigator::platform()和Navigator::oscpu()方法:
    String Navigator::platform() const {
      return "Win32"; // 64位系统也可保持该值,官方Chrome默认返回这个
    }
    
    String Navigator::oscpu() const {
      return "Windows NT 10.0; Win64; x64"; // Win11的标识和该值一致,无需修改
    }
    

三、修改程序核心标识

部分网站会检测浏览器的进程名、产品名称,自行编译的Chromium默认名称和官方不一样,修改以下两处:

  • 目标文件:chrome/common/chrome_constants.cc
  • 修改kProductName和kExecutableName:
    const base::FilePath::CharType kProductName[] = FILE_PATH_LITERAL("Google Chrome");
    const base::FilePath::CharType kExecutableName[] = FILE_PATH_LITERAL("chrome.exe");
    
  • 额外修改chrome/app/chrome_exe.rc(Windows资源文件),把里面的产品名称、文件描述改成和官方Chrome完全一致,避免资源层面的指纹差异。

四、对齐V8引擎标识

部分高级指纹检测会校验V8引擎的版本和嵌入方信息,修改此处:

  • 目标文件:v8/src/version.cc
  • 修改kVersion和kEmbedder字段,对应你Chromium版本的官方V8版本号:
    const char* const kVersion = "11.8.172.13"; // 替换为你编译版本对应的V8版本号
    const char* const kEmbedder = "Google Chrome";
    

编译验证

改完所有文件后,重新执行编译命令:

autoninja -C out/Default chrome

编译完成后打开浏览器,测试之前被拦截的网站即可。

内容的提问来源于stack exchange,提问作者Jaspreet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:57:41