飘在云端

东西南北,海角天涯

· 前端 · · 1827次浏览

谷歌浏览器Chrome 真·关闭下载警告拦截/下载完病毒扫描/允许下载完自动打开

更新:2024-06-13,使用了更优雅的方法,我在 Linux 下克隆了部分 Chromium 源码,自己重新编译了该文件
太长不看版
我的编译成品,因为阿里云盘只不允许分享此类后缀,我使用了 winrar 打包成了自解压 exe 可执行文件

https://www.alipan.com/s/fNqTdKrPNEc
提取码 s62p
再根据文章内容替换相应文件,修改注册表项,重启浏览器实时生效

理论支持支持谷歌 Chrome/Chromium 全系列版本和未来发布的版本,包括不同发行渠道:稳定版、测试版、开发版、金丝雀版
并在以下版本中验证通过
Chrome v99/102/109/111/123/124/125 x64
Chromium v109/125 x64

由于愚蠢的谷歌部分开发者总是试图帮用户做决定,安全浏览这个 fuck 功能设计,当在新版 chrome 关闭安全浏览,反而会将所有下载给拦截,需要手动确认
过度限制的安全策略实际上并不能提高安全性,如果他们需要非常安全,请在自己的电脑上设置,不要强制帮用户决定

谷歌既然提供了一个禁用安全浏览的开关,那么你必须按这个开关做,当用户禁用这个开关意味对自己的安全负责
而不是一个 UI 开关,禁用之后所有下载全部拦截,这不叫关闭

这是用户的电脑,不是谷歌的电脑。我们用户,做决定,不要Google为我做决定

这安全浏览确实侮辱了很多用户的智商,我关闭了安全浏览,每次下载内容时浏览器都会通知我,即使我禁用了安全浏览,禁用安全浏览已经表明用户不要任何通知或警告,因为用户明确手动禁用了安全浏览
反而因为关闭安全浏览来不安全来阻止下载,何等荒谬
设计这个功能和逆天逻辑的开发者内心有多不安全,环境有多恶劣?电脑是不是全部虚拟化+装了一坨安全软件,密码64位以上随机生成大小小写特殊字符英文?
再次 fuck google


实现了如下目标:
1>标记所有文件后缀为安全无风险(包括了未发布的文件后缀类型)
2>允许用户决定所有文件类型是否自动打开(选择权交还用户)
3>关闭所有文件安全检查、禁止下载时向 Google 服务器发送 ping 请求(需要配合文中的修改 hosts 使用)
4>禁止报告压缩文件类型(避免进一步检查行为)

环境:
Ubuntu 22.04.2 LTS
至少 7 G 的空闲空间(du -sh ~/chromium = 6.2 GB,再加上其他附加工具依赖,还会多一些)
protoc v27.1

  • 获取 download_file_types.pb的原型源码文件 download_file_types.proto,并提前修改好

https://source.chromium.org/chromium/chromium/src/+/main:components/safe_browsing/content/common/proto/download_file_types.proto

备注:可能需要自备魔法,没有也可以直接使用下面修改好的
修改相关选项
default_file_type 字段定义了默认的文件类型,这是是无,以便使用修改过的默认值
ping_setting 字段定义了 ping 类型,这里肯定改为 1,取值有

SAMPLED_PING = 0;
NO_PING = 1;
FULL_PING = 2;

DangerLevel 定义了文件危险级别,这里肯定改为 0 取值还有 1:表示文件可能危险,这时候已经有提示了,需要用户明确操作才能继续下载,取值 2,危险文件,浏览器会阻止下载或显示警告提示,fuck chrome

NOT_DANGEROUS = 0;
ALLOW_ON_USER_GESTURE = 1;
DANGEROUS = 2;

AutoOpenHint 定义了自动打开行为,这里改成 1,允许用户自己选择下载完后是否自动打开,取值还有 0,强制不允许

DISALLOW_AUTO_OPEN = 0;
ALLOW_AUTO_OPEN = 1;

修改后 download_file_types.proto 最终如下

// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package safe_browsing;

message DownloadFileType {
  optional string extension = 1;  // required, except in default_file_type.
  optional int64 uma_value = 2;   // required
  optional bool is_archive = 3 [default = false];

  enum PingSetting {
    SAMPLED_PING = 0;
    NO_PING = 1;
    FULL_PING = 2;
  }
  optional PingSetting ping_setting = 4 [default = NO_PING];  // 禁止 ping

  enum DangerLevel {
    NOT_DANGEROUS = 0;
    ALLOW_ON_USER_GESTURE = 1;
    DANGEROUS = 2;
  }

  enum AutoOpenHint {
    DISALLOW_AUTO_OPEN = 0;
    ALLOW_AUTO_OPEN = 1;
  }

  enum PlatformType {
    PLATFORM_ANY = 0;
    PLATFORM_ANDROID = 1;
    PLATFORM_CHROME_OS = 2;
    PLATFORM_LINUX = 3;
    PLATFORM_MAC = 4;
    PLATFORM_WINDOWS = 5;
    PLATFORM_FUCHSIA = 6;
  }

  message PlatformSettings {
    optional PlatformType platform = 1 [default = PLATFORM_ANY]; //标记该文件策略为所有平台均适用,windows/linux/macos/Chrome OS......
    optional DangerLevel danger_level = 2 [default = NOT_DANGEROUS]; // 标记为安全
    optional AutoOpenHint auto_open_hint = 3 [default = ALLOW_AUTO_OPEN];  // 允许自动打开
    optional uint64 max_file_size_to_analyze = 4 //最大安全分析的文件大小,这里已经没意义了无效了,因为前面其他安全逻辑都关了,不会进入到分析阶段
        [default = 18446744073709551615];  // (2^64)-1]
  };

  repeated PlatformSettings platform_settings = 5;

  enum InspectionType {
    NONE = 0;
    ZIP = 1;
    RAR = 2;
    DMG = 3;
    OFFICE_DOCUMENT = 4;
  }
  optional InspectionType inspection_type = 6 [default = NONE]; // 关闭预定义的不安全文件分析检查
};

message DownloadFileTypeConfig {
  optional uint32 version_id = 1;
  optional float sampled_ping_probability = 2 [default = 0];  // 禁止所有 ping
  repeated DownloadFileType file_types = 3;
  optional DownloadFileType default_file_type = 4;

  optional uint64 max_archived_binaries_to_report = 5 [default = 0]; // 禁止报告为压缩文件触发进一步检查
}


开始编译

安装基本依赖

apt install protobuf-compiler build-essential git python3 python3-pip curl
mkdir protoc && cd protoc
wget https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-linux-x86_64.zip
cp ./bin/protoc /usr/bin/ 

获取 Chromiu 只关于 download_file_types 部分的源码

mkdir 
git clone --depth 1 https://chromium.googlesource.com/chromium/src.git

cd ~/chromium/src/components/safe_browsing/content/common
protoc download_file_types.proto --descriptor_set_out=download_file_types.pb

然后 sz download_file_types.pb 下载到本地电脑就好了

编译时遇到的问题参考链接

谷歌官方 Linux 下构建 Chromium 指南

https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md

更新:2024-06-06
奇怪了,我在 Chrome Stable x64 123.0.6312.123 版本上发现了 download_file_types.pb 文件存在,且父目录为 65 ,看起来该机制仍然存在并持续生效?如果是的话,我收回之前不适用 v117+ 版本的话
经过测试,对于 Chrome v123.0.6312.123 x64 稳定版,该方法仍然有效,但截止到目前最新稳定版为 v125.x,盲猜依然有效

对于较新版的chrome,如v123,可以访问 chrome://components 手动下载官方的 File Type Policies 文件

另外强烈推荐一个方案,一个基于谷歌最新 Chromium 源码自动构建的谷歌浏览器 Chromium(非官方构建)

自动实时同步上游 Chromium 最新 commit 源码进行全自动构建打包,移除了所有依赖于谷歌网络服务的功能和组件,减少了与谷歌服务器的通信,提升了用户隐私,同时增加更多功能和新特性(默认不启用)

我分享保存到了国内网盘一份,也可以自行在 GitHub 项目下载
https://www.alipan.com/s/6CRtfQDmi1Z
提取码 10et

ungoogled-chromium:尽量保留了与默认 Chromium 相同的使用体验,旨在成为一个直接的替代品。

因为即使是 Chromium,也包含谷歌的各类服务集成,如同步、浏览数据收集、谷歌账户登录等,作为谷歌的开源浏览器项目,它的默认设置和服务集成都与谷歌的生态系统紧密相连

ungoogled-chromium 主要针对那些希望在使用 Chromium 浏览器的同时,避免与谷歌服务关联、提高隐私和控制权的用户。而 Chromium 本身则是谷歌开发和维护的开源项目,与谷歌的服务生态系统紧密集成

项目自述

ungoogled-chromium
一种去除谷歌网络服务依赖的轻量化方法

 目标
按重要性降序排列(即最重要的目标在最前):

1. ungoogled-chromium 是不依赖于谷歌网络服务的 Google Chromium。
2. ungoogled-chromium 尽可能保留默认的 Chromium 使用体验。与其他有自己浏览器愿景的 Chromium 分支不同,ungoogled-chromium 本质上是 Chromium 的替代品。
3. ungoogled-chromium 具有增强隐私、控制和透明度的调整。然而,几乎所有这些功能都必须手动激活或启用。更多详情请参见功能概述。
4. 在目标发生冲突的情况下,应该优先考虑更重要的目标。

项目地址:

https://github.com/ungoogled-software/ungoogled-chromium

请输入图片描述

这些高级特性自行进入 chrome://flags 查看,例如:屏蔽谷歌浏览器全屏模式下的按 ESC 退出提示和按键、移动到边缘时 按 X 退出提示,按 F11 之后完全全屏,只能按 F11 再次退出,

Hide Fullscreen Exit UI
Hides the "X" that appears when the mouse cursor is moved towards the top of the window in fullscreen mode. Additionally, this hides the "Press F11 to exit full screen" popup. ungoogled-chromium flag. – Mac, Windows, Linux, ChromeOS, Fuchsia, Lacros

#hide-fullscreen-exit-ui

再如,关于智障安全浏览的功能细节设定及屏蔽

No Pings
Don't send hyperlink auditing pings. Chromium feature, ungoogled-chromium flag. – Mac, Windows, Linux, ChromeOS, Android, Fuchsia, Lacros

#no-pings

这里选择 Enable 就能屏蔽安全浏览发送超链接审核的 ping

更多增强功能可以在 flags 界面搜索关键字 ungoogle

请输入图片描述

更新:2024-02-14,修改了一下注册表键值写法,只导入到 USER 根键,使其生效优先级为最高

修改好的注册表文件和全部后缀加白名单的文件,下载地址:
https://www.alipan.com/s/9gHDpPkXVVw
提取码 0f0t

更新:
2023-10-22 Chrome v117 + (含 117) 增强了安全浏览功能,并且部分安全机制变更,本文内容不支持 Chrome v117+ 版本
具体见

https://mp.weixin.qq.com/s/_O5p9bdIy7GSi6ddn8lnVg

如何关闭增强型安全浏览(需魔法):

https://myaccount.google.com/account-enhanced-safe-browsing
请输入图片描述

2023-08-22 ,已知 当 Ctrl + Shift + Delete 勾选所有清除数据选项,未加固情况下会清除后缀名安全策略文件,如果设置了权限加固可无视防止 chrome 修改文件名后缀安全策略文件

重要更新:2023-5-11

彻底解决这个问题,加白所有在数据库里的后缀,任何网络环境下,都不会拦截了,但还是建议 hosts 屏蔽相关安全浏览功能的域名


更新: 2023-01 关于安全浏览这多余功能,泄漏隐私、狗拿耗子多管闲事的行为,直接 f**k

修改系统 hosts 文件,路径:C:\Windows\System32\drivers\etc\HOSTS(自行解决 Windows 自带安全机制对 Hosts 文件的保护),把下面内容追加到文件末尾

127.0.0.1 sb-ssl.google.com
127.0.0.1 safebrowsing.googleapis.com
127.0.0.1 safebrowsing.clients.google.com
127.0.0.1 safebrowsing-cache.google.com

如果使用 clash,也可以加入到拦截规则
请输入图片描述

  • 更新:2022-3-21 经过测试,还是有部分下载出现的拦截警告,调试抓包谷歌浏览器,发现安全浏览开关是个摆设,无论设置的值是什么,下载文件时始终会向 sb-ssl.google.com 这个域名发送文件相关信息(md5/文件大小/类型/下载地址/......)
  • 更新:2022-3-13 发现 Chrome 升级后也会保留之前修改的文件
  • 更新:2021-10-21 增加懒人一键修改包,详见文章内容的第七步,下载后解压修改好的文件,到文章说的路径,进行覆盖替换,并双击导入注册表文件,关闭浏览器重新打开立即生效。

另附:谷歌最新正式稳定版 x64 位 离线安装包 永久静态下载直链(谷歌会实时更新,链接始终指向最新正式版):
https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup64.exe

以上地址转载自:

https://www.jianshu.com/p/9863974cd1b4

或者也可以在异次元这里下载,版本更全,且也全是官方链接:
https://www.iplaysoft.com/tools/chrome/


环境:92.0.4515.159 / 96 / 99 / 109 (正式版本) (64 位) (cohort: Stable)
系统:win7 SP1 x64 专业版
目标:关闭自带下载器的任何安全措施:

  • 下载前的 网站的 URL 安全检测
  • 下载文件的 URL 安全检测
  • 下载文件的后缀名安全提示、警告/此类型文件对计算机有害,是否保留还是舍弃
  • 下载完执行安全病毒扫描,导致卡一段时间才能最终完成
  • 自定义允许指定后缀/所有后缀文件名下载完自动打开

谷歌浏览器越来越臃肿了,功能上也是越来越一意孤行了,活脱脱的浏览器寡头,希望火狐加油呀。

开始前,你们可以测试下这些链接的拦截情况:

测试 URL 样例 1,崩坏3 桌面服客户端下载器,访问 https://bh3.mihoyo.com/main ,点击 PC 下载,下载直链:https://bundle.bh3.com/public/PC/Bh3_release_2.23.2.0.exe ,触发拦截

测试 URL 样例 2,QQ 电脑管家在线下载器,进入 https://guanjia.qq.com/product/weixin/ 页面,点击 微信、管家一键下载,触发拦截,或本页下载直链:https://pm.myapp.com/invc/xfspeed/qqpcmgr/download/QQPCDownload70580.exe ,应该不触发

测试 URL 样例 3,Microsoft Edge 浏览器在线下载器,访问 https://www.microsoft.com/en-us/edge/download?form=MA13FJ ,点击 Download for Windows 11 / 10 ,触发拦截,本页面直接点击下载直链:https://c2rsetup.officeapps.live.com/c2r/downloadEdge.aspx?platform=Default&source=EdgeStablePage&Channel=Stable&language=zh-cn&brand=M100,应该不触发

测试 URL 样例 4,逍遥模拟器安装包,访问 https://www.xyaz.cn/,点击 立即下载 → 个人版,应该触发,本页面点击下载直链:https://download.microvirt.com/download/XYAZ-Setup-8.1.2-ha12ab0d7e.exe,应该不触发

可以看到 Chrome 安全机制比较复杂,检测文件后缀、下载网页、检测了类似 referer header 值里面的域名,因为当 referer 为空去下载风险文件直链,是不触发的,或者 referer 里面的域名没有命中风控

做进一步测试,使用 CORS Unblock 扩展移除拦截网站的 Referer 和 Origin 请求 header,确定是 referer 问题

简单测试结束,开始修改


  • 先完成一些基础前提条件,操作系统:
  1. 关闭谷歌浏览器下载完文件,自动强制执行的病毒扫描 (系统级)

    说明:关闭操作系统自带的下载附件安全扫描,这个是系统级内置的,许多浏览器会下载完之后根据系统的设置判断是否下载完进行病毒扫描。导致下载完之后文件要等待一段时间才真正的好了(取决你文件大小),特别是一些小文件,每个都要卡几秒,恶心人,一个浏览器好好做自己本分的事,安全让别的软件处理

    注册表定位到如下路径:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Attachments

    新建一个名为 ScanWithAntiVirus,数据类型为 DWORD 32位的键值,值为1,基数类型,十六进制,保存后重启系统生效,这里可以先不重启,把下面的操作都做完了再重启,如果本身就已经有这个键值了,就修改键值内容是为 1

  2. 关闭下载完之后,直接加载部分后缀的文件时触发的安全扫描(系统级)。

    Win 键 + R,打开运行对话框,输入 inetcpl.cpl,打开Internet选项,点击 安全选项卡,选择 Internet 区域,选择自定义级别。

    Internet选项

    在弹出的二级界面中,找到 加载应用程序和不安全的文件,把这个选项改成 启用,并确定保存,如图:

    加载应用程序和不安全的文件

  • 操作系统配置完了,接下来就是对谷歌进行一些设置:
  1. 谷歌浏览器桌面快捷方式追加如下启动参数:

    • 允许加载不安全脚本/内容【关闭不安全提示直接加载】,关闭 Chrome 安全浏览的下载保护:

    --allow-running-insecure-content --safebrowsing-disable-download-protection

  2. 修改注册表,定位到 [HKEY_CURRENT_USER\SOFTWARE\Policies\Google\Chrome]
    如果没有 Google 及 Chrome 子项,就自己新建一个,或者直接使用成品的注册表文件导入
    新建一个 DWORD32(32-位)值,名字为 SafeBrowsingProtectionLevel,值内容为 1
    如果你使用魔法上网,如 SwitchyOmega 之类代理的浏览器插件,或者代理客户端开启系统代理形式,值为 1 即可,纯国内网络使用场景,也是值为 1 即可
  3. 这一步可以跳过,直接去用文章末尾提供修改好的文件去替换

    下载这个 Winhex 工具

    WinHex-20.8-x86-x64.exe
    https://www.aliyundrive.com/s/Dbk8wge9TGR
    提取码: re48

    或者任意能对文件数据进行十六进制编辑的工具。
    打开资源管理器,地址栏输入这个路径并回车访问 %localappdata%\Google\Chrome\User Data\FileTypePolicies\,会看到该路径下面,只有一个数字命名的目录,目前博文使用的 v92.x Chrome,该目录名为 43,随着版本更新,可能会变化增加,这里不管它什么命名,点进去,可以看到有一个名为 download_file_types.pb的文件,我们先复制一份,直接原地粘贴,就会生成一个名为 download_file_types - 复件.pb的同样文件,这个作为备份

    打开 WinHex 工具,点击左上角的 文件 菜单,选择打开,选择 download_file_types.pb文件,使用快捷键 Ctrl + F 打开搜索工具,输入你想要放行的文件后缀,注意只能一次次改,所以先输入第一个,比如这里输入 exe,然后点击确定,WinHex会自动定位到 exe 扩展名位于文件中的位置,可以看到 exe 的Ascii 代码是 65 78 65 ,65 对应 e ,78 对应 x ,65 对应 e ,一 一对应,这里我们只需要把代表 exe 的 Ascii 码改为 6 个数字 0 即可,双击 定位到的开头数字 6,,此时进入了编辑状态,连续输入 6 个数字 0,即改成 00 00 00,然后 快捷键 Ctrl + S 保存,点击确定就行了

    此时还没完,我们要防止谷歌再次对文件进行更新/修改/删除操作,只允许读取

    在该文件的当前目录按住 Shift + 右键,打开 cmd,执行 icacls download_file_types.pb /grant:r everyone:R

注意该操作需要管理员权限的 cmd,如果没有,请先提权再执行,这样即使 Ctrl + Shift + Delete 清除数据,该文件也不会被修改了

修改后缀名1
修改后缀名2

如果还想修改更多,比如 pdf,也是依葫芦画瓢,想知道什么后缀会被谷歌浏览器给拦截,详情参见这个链接

https://chromium.googlesource.com/chromium/src/+/refs/heads/main/components/safe_browsing/content/resources/download_file_types.asciipb

  注意以上链接可能需要魔法才能访问。
  我看了下,截止到博文发表日期,谷歌统计了 387 个文件后后缀,搜索 ALLOW_ON_USER_GESTURE关键字,就是那个总是要用户确认是保留还是确认的文件后缀,占了199个

  进入 %localappdata%\Google\Chrome\User Data\FileTypePolicies\,这里会有个数字编号的目录,点进去,复制文件替换掉 download_file_types.pb

导入注册表之后,需要 访问 chrome://policy/ 点击重新加载政策,手动刷新策略才能实时生效

  1. 倒回去测试文章开头提供的下载链接,检查拦截情况,应该全部秒下载无拦截和提示
  2. 如有问题评论区留言

因此直接全部加白名单,经过各种苛刻的测试,未见任何拦截

如有遗漏拦截弹窗行为,可以评论区留言反馈

修改好的注册表文件和全部后缀加白名单的文件,下载地址:
https://www.alipan.com/s/9gHDpPkXVVw
提取码 0f0t

再次 fuck Chrome,不务正业:

查找有害软件,Chrome 可以查找您计算机上的有害软件并将其移除 功能?

向 Google 报告在此次清理期间在您计算机中发现的有害软件、系统设置和进程的相关详情 功能?

安全浏览 功能?

评论 (8条)
  1. kbfz12

    实测按教程1-3操作后,运行修改好的注册表文件且用全部后缀加白名单的文件进行替换,所有测试下载仍被拦截。求更新啊

    回复
    1. 博主
      @kbfz12

      什么版本的Chrome

      回复
  2. 222

    蓝奏盘有密码啊~~~

    回复
    1. 量子涨落 博主
      @222

      啊,没注意,已更新内容加入了外链密码,密码:b15hsf

      回复
  3. 1

    基本不弹了,但还是会有。😭

    回复
    1. 量子涨落 博主
      @1

      还没重写内容,我先鸽一会,抽空再更新内容

      回复
  4. 牛,找了这么久,终于发现解决方法了,烦人的下载警告终于没有了

    回复
  5. 量子涨落 博主

    隔一段时间我再更新,把做好的成品分享出来,包括注册表修改好的成品文件,一键双击导入,修改好的download_file_types.pb

    回复