ungoogled-chromium 默认设置详解:14 项出厂默认值的变更与底层补丁实现
【免费下载链接】ungoogled-chromiumGoogle Chromium, sans integration with Google项目地址: https://gitcode.com/gh_mirrors/un/ungoogled-chromium
ungoogled-chromium 在构建时对 Chromium 的部分出厂默认值做了有意的调整,主要集中在隐私与网络行为方面,这些调整通过 docs/default_settings.md 以列表形式完整记录。本文逐条解读这 14 项默认设置变更的所在位置、作用机制,并深入仓库补丁源码,说明每一项背后的具体实现文件与可回退方式,帮助你在安装后理解、验证并自定义这些行为。
变更总览:14 项默认设置一览
原文档给出的完整对照表如下("Location" 列指明了在chrome://settings下的对应设置页,NA表示没有对应的设置界面,只能通过开关或行为观察):
| Setting | New State | Location | |-- | -- | -- | | Allow sites to check if you have payment methods saved | Disabled | chrome://settings/payments | | Ask where to save each file before downloading | Enabled | chrome://settings/downloads | | Auto sign-in | Disabled | chrome://settings/passwords | | Block third-party cookies | Enabled | chrome://settings/cookies | | Continue running background apps when Chromium is closed | Disabled | chrome://settings/system | | Hyperlink auditing (<a ping>) | Disabled | NA | | Link Doctor | Disabled | NA | | Offer to save passwords | Disabled | chrome://settings/passwords | | Payment autofill | Disabled | chrome://settings/payments | | Preload pages | Disabled | chrome://settings/performance | | Search suggestions | Disabled | chrome://settings/syncSetup | | Show bookmark bar | Enabled | chrome://settings/appearance | | Third-party sign-in | Disabled |--enable-features=FedCm| | WebRTC IP handling policy | Disable Non-Proxied UDP |--webrtc-ip-handling-policy|
从表中可以读出两个规律:
- 绝大多数是"关闭"动作:保存密码、自动填充支付、第三方 Cookie、预加载等默认开启的能力被关闭,只有"下载前询问保存位置"和"显示书签栏"两项被默认打开——前者是安全行为,后者是 UI 可用性行为。
- 只有少数项没有设置页入口(Hyperlink auditing、Link Doctor),它们通过命令行开关或行为差异体现,表中给出的命令行(如
--enable-features=FedCm、--webrtc-ip-handling-policy)就是覆盖这些默认值的手段。
需要说明的是,这些变更来自标记为extra的补丁集。按 docs/design.md 的分类,extra补丁是"关于控制与透明度的功能变更,不保证在 Chromium 版本升级后持续存在",因此这些默认值属于 ungoogled-chromium 的"可演进"行为层,而非核心构建依赖。
密码与自动填充:四项默认关闭的凭据相关设置
表格中chrome://settings/passwords与chrome://settings/payments涉及的四项——Auto sign-in、Offer to save passwords、Allow sites to check if you have payment methods saved、Payment autofill——在源码中对应密码管理器和自动填充模块的偏好注册默认值。以仓库中体现这类改动的补丁 patches/extra/inox-patchset/0006-modify-default-prefs.patch 为例,可以看到典型的实现模式:
// components/password_manager/core/browser/password_manager.cc void PasswordManager::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( - prefs::kCredentialsEnableService, true, // Offer to save passwords + prefs::kCredentialsEnableService, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); registry->RegisterBooleanPref( - prefs::kCredentialsEnableAutosignin, true, // Auto sign-in + prefs::kCredentialsEnableAutosignin, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF); ...// components/autofill/core/common/autofill_prefs.cc - kAutofillProfileEnabled, true, // 自动填充资料 + kAutofillProfileEnabled, false, - kAutofillCreditCardEnabled, true, // Payment autofill + kAutofillCreditCardEnabled, false,// components/payments/core/payment_prefs.cc registry->RegisterBooleanPref( - kCanMakePaymentEnabled, true, // 站点可检查是否有已保存支付方式 + kCanMakePaymentEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);值得注意的技术细节:这些偏好都带SYNCABLE_PREF属性,即它们属于同步域(syncable prefs)的一部分。这解释了为什么表中 Search suggestions 的 Location 是chrome://settings/syncSetup——搜索建议开关本身就是同步域偏好,在设置页中归属到同步相关区域。
这类偏好默认值的改动还有一个连带效果:当 Safe Browsing 等依赖模块被移除后,一些原本引用相关偏好的代码路径会失效,仓库中的 patches/core/ungoogled-chromium/remove-unused-preferences-fields.patch 就负责清理这些成为"死字段"的偏好(该补丁中大量出现kSearchSuggestEnabled、kCredentialsEnableService、kCanMakePaymentEnabled、kCookieControlsMode等字段的引用处理),保证偏好注册表与实际功能一致。
第三方 Cookie 与预加载:网络层默认值
Block third-party cookies一项对应 Cookie 控制模式偏好。默认值修改将模式从"仅无痕模式生效"切换为"屏蔽第三方 Cookie":
// components/content_settings/core/browser/cookie_settings.cc registry->RegisterIntegerPref( prefs::kCookieControlsMode, - static_cast<int>(CookieControlsMode::kIncognitoOnly), + static_cast<int>(CookieControlsMode::kBlockThirdParty), user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);该模式在chrome://settings/cookies中可见,用户可自行切回。
Preload pages(页面预加载,即网络预测)的改动更为底层——它不是改一个布尔值,而是改变了网络预测选项枚举的"默认项":
// chrome/browser/preloading/preloading_prefs.h enum class NetworkPredictionOptions { kWifiOnlyDeprecated = 1, kDisabled = 2, kExtended = 3, - kDefault = kWifiOnlyDeprecated, + kDefault = kDisabled, };从源码结构看,将kDefault从kWifiOnlyDeprecated重指向kDisabled,意味着所有未显式设置的配置文件一律落入"禁用预测"分支,chrome://settings/performance中的 Preload pages 开关因此默认呈现关闭状态。
Continue running background apps对应托管应用的后台模式偏好:
// chrome/browser/background/extensions/background_mode_manager.cc - registry->RegisterBooleanPref(prefs::kBackgroundModeEnabled, true); + registry->RegisterBooleanPref(prefs::kBackgroundModeEnabled, false);关闭后,关闭浏览器窗口即终止托管应用(PWA/扩展)的后台运行,对应设置页chrome://settings/system。
下载行为:默认询问保存位置
Ask where to save each file before downloading是表中少数被"开启"的项之一,其实现是下载偏好kPromptForDownload的默认值翻转。仓库中的 patches/extra/iridium-browser/prefs-always-prompt-for-download-directory-by-defaul.patch 完整呈现了这一改动及其动机:
// chrome/browser/download/download_prefs.cc registry->RegisterBooleanPref( prefs::kPromptForDownload, - false, + true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);补丁说明文字(补丁头部分)解释了设计意图:当浏览器将某链接判定为文件下载并直接落盘时,视觉反馈极小,用户往往需要再打开文件管理器才能发现并移动文件——因此"不要让文件轻易溜上磁盘"。该设置位于chrome://settings/downloads,可随时关闭。
网络跟踪信号:Hyperlink auditing、Link Doctor 与搜索建议
表中三项 Location 为NA或同步页的设置中:
Hyperlink auditing (
<a ping>):修改kEnableHyperlinkAuditing注册默认值为false(见 0006-modify-default-prefs.patch 中chrome_content_browser_client.cc段):// chrome/browser/chrome_content_browser_client.cc - registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, true); + registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, false);由于没有设置页入口,表中给出的观察方式是命令行开关。仓库的 docs/flags.md 在"全平台可用开关"中列出了对应的
--no-pings("Don't send hyperlink auditing pings"),即该行为可在全局层面显式控制。Search suggestions:
kSearchSuggestEnabled注册默认值由true改为false(Profile::RegisterProfilePrefs中)。注意它与同步域的关联——该项是SYNCABLE_PREF,因此文档将其 Location 指向chrome://settings/syncSetup。Link Doctor:无对应的独立设置页,属行为层默认关闭;表中将其与 Hyperlink auditing 并列,二者都是 Chromium 中容易被用户忽视的出站行为通道,ungoogled-chromium 的取向是一并收紧。
书签栏:默认显示
Show bookmark bar是唯一被默认"打开"的 UI 项,对应书签组件的偏好:
// components/bookmarks/browser/bookmark_utils.cc registry->RegisterBooleanPref( - prefs::kShowBookmarkBar, false, + prefs::kShowBookmarkBar, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);仓库中还为此配套了一个实验性标志:patches/extra/ungoogled-chromium/add-flag-for-bookmark-bar-ntp.patch 在BookmarkBarController::ShouldShowBookmarkBar()中增加了bookmark-bar-ntp开关判断,允许用户在chrome://flags中选择"永不在新标签页显示书签栏":
bool BookmarkBarController::ShouldShowBookmarkBar() const { + if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("bookmark-bar-ntp") == "never") { + return false; + }这说明该默认值虽有"显示"取向,但保留了细粒度的用户控制通道。
WebRTC IP 处理策略:默认禁用非代理 UDP
WebRTC IP handling policy一项的默认值是Disable Non-Proxied UDP,实现在 patches/extra/ungoogled-chromium/default-webrtc-ip-handling-policy.patch:
// chrome/browser/ui/browser_ui_prefs.cc registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy, - blink::kWebRTCIPHandlingDefault); + blink::kWebRTCIPHandlingDisableNonProxiedUdp);kWebRTCIPHandlingPolicy是字符串型偏好,取值对应 blink 层定义的一组枚举常量。默认值从"标准处理"切换为"禁用非代理 UDP",效果是 WebRTC 的 UDP 媒体流仅允许经由 ICE 中继(relay/TURN)传输,不再直接使用主机/主机直连地址(host/srflx candidate)。这对降低本地网络拓扑与公网地址暴露、同时保证通话可用(依赖 relay 的流仍可工作)是一个折中点。
覆盖方式有两条,表中已给出命令行--webrtc-ip-handling-policy,仓库另外补了一条 UI 通道:patches/extra/ungoogled-chromium/add-flags-for-existing-switches.patch 把webrtc-ip-handling-policy注册为chrome://flags实验条目(补丁中可见该键被多次加入 flags 元数据列表,docs/flags.md中同时记载了该开关的语义"Restrict which IP addresses and interfaces WebRTC uses")。即:启动参数与chrome://flags均可覆盖此默认值。
第三方登录:FedCM 默认关闭
Third-party sign-in一项对应 Federated Credential Management(FedCM)特性。与前面修改偏好默认值不同,这里修改的是特性开关(Feature Flag)的编译期默认状态,实现在 patches/extra/ungoogled-chromium/disable-fedcm-by-default.patch:
// content/public/common/content_features.cc -BASE_FEATURE(kFedCm, base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kFedCm, base::FEATURE_DISABLED_BY_DEFAULT);由于改的是BASE_FEATURE宏的默认值,覆盖方式不是改偏好,而是运行时显式启用特性——这正是表中给出的--enable-features=FedCm。这一项与前面的第三方 Cookie 屏蔽共同构成对跨站点凭据关联行为的收紧:默认情况下,站点无法通过 FedCM 关联用户在 IdP 侧的联邦登录记录。
验证与回退:这些默认值如何使用
基于上述源码结构,可以归纳出统一的验证与回退路径:
- 有设置页的项(payments、downloads、passwords、cookies、system、performance、appearance、syncSetup):安装后打开对应
chrome://settings子页,即可看到表中描述的默认状态,并可直接切换回上游默认。 - 无设置页的项:Hyperlink auditing 可通过 docs/flags.md 列出的
--no-pings开关观察/控制;WebRTC 策略可通过启动参数--webrtc-ip-handling-policy或chrome://flags中的对应实验项(由 add-flags-for-existing-switches.patch 注入)覆盖;FedCM 通过--enable-features=FedCm显式开启。 - 理解演进边界:由于这些改动集中在
extra补丁集(见 patches/series 中extra/...条目的排布,以及 docs/design.md 对 extra 类补丁的定义),升级 Chromium 基线后个别默认值可能随之调整或迁移。若要精确定位某一项的实现,可按本文给出的偏好名(如kPromptForDownload、kCookieControlsMode、kWebRTCIPHandlingPolicy、kBackgroundModeEnabled)在patches/目录下检索,即可找到对应的RegisterBooleanPref/RegisterStringPref注册点。
小结
ungoogled-chromium 的默认设置调整覆盖面窄而意图明确:凭据与自动填充能力(密码保存/自动登录/支付自动填充/支付方式探测)默认关闭、第三方 Cookie 默认屏蔽、出站信号通道(<a ping>、Link Doctor、搜索建议)默认静默、网络预测默认禁用、下载默认询问、WebRTC 默认禁用非代理 UDP、FedCM 默认关闭;同时以书签栏默认显示和下载询问换取可用性与安全性的平衡。每项变更都能在仓库补丁中找到"一处注册默认值翻转"级别的精确实现,既保留了上游的设置页入口供用户自行回退,又通过chrome://flags与命令行开关提供第二控制通道——这种"改默认值而非删功能"的做法,正是其extra补丁层"控制与透明度"定位的体现。
【免费下载链接】ungoogled-chromiumGoogle Chromium, sans integration with Google项目地址: https://gitcode.com/gh_mirrors/un/ungoogled-chromium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考