Brave浏览器:隐私优先的开源浏览器项目全解析

82 阅读6分钟

项目标题与描述

Brave浏览器是一个基于Chromium开源项目的隐私保护浏览器,专注于提供快速、安全的浏览体验。项目通过内置的广告拦截器、追踪保护和加密货币钱包(Brave Wallet)等核心功能,重新定义了现代浏览器的隐私标准。该仓库包含了构建Brave桌面浏览器(支持macOS、Windows和Linux)所需的完整工具链和依赖管理。

项目状态持续活跃,定期更新Chromium基础版本并集成安全补丁与新功能。

功能特性

根据代码库中的变更日志(CHANGELOG)和项目概述分析,Brave浏览器具备以下核心功能:

  • 隐私与安全增强

    • 内置广告拦截与反追踪功能,保护用户免受恶意广告和隐私追踪
    • 实施硬件钱包通信验证等安全增强措施(HackerOne报告修复)
    • 支持阻止YouTube分散注意力元素并移除Shorts
  • Web3与加密货币集成

    • 内置Brave Wallet钱包,支持多种区块链网络
    • 添加钱包地址“操作”菜单和投资组合设置下拉菜单
    • 支持解析新的Unstoppable Domains TLD(包括.brave TLD)
    • 为Zcash主网端点添加Brave代理
    • 修复市场详情页面和Web视图重载问题
  • AI助手(Leo)

    • 集成“Gemma 3 12B”等预训练模型
    • 支持通过“@”提及将标签页作为附件添加
    • 优化回答表格格式,修复转义HTML标签显示问题
  • 性能与用户体验

    • 改进垂直标签页在macOS 26上的底部圆角设计
    • 添加标签切换器中褪色图标的颜色以提升可见性
    • 支持液体玻璃图标(macOS 26)
    • 后台标签页数据更新脱离主线程,提升性能
    • 支持塞尔维亚语和保加利亚语
  • 同步与多设备支持

    • 添加独立的同步标签页UI
    • 支持后台播放(应用切换或设备锁定时)

安装指南

系统要求

  • 操作系统:macOS、Windows或Linux
  • 构建工具:根据平台需要安装相应的开发环境

构建环境配置

项目使用自定义构建工具链来同步和编译代码。主要依赖包括:

  1. Chromium源码:通过depot_tools获取
  2. brave-core模块:位于src/brave目录,包含对第三方Chromium代码的补丁
  3. adblock-rust引擎:Brave的广告拦截引擎实现

平台特定设置

根据项目文档,需要按平台配置开发环境:

快速开始

对于大多数用户,建议直接从Brave官方网站下载最新稳定版。对于开发者,可以克隆仓库并按照构建说明进行编译。

使用说明

基础构建流程

项目使用Node.js脚本管理依赖和构建过程。核心构建脚本位于项目根目录:

// 构建系统会自动同步brave-core子模块
const braveCoreDir = path.resolve(__dirname, '..', 'src', 'brave')
const braveCoreRef = util.getProjectVersion('brave-core')

if (!fs.existsSync(path.join(braveCoreDir, '.git'))) {
  Log.status(`Cloning brave-core [${braveCoreRef}] into ${braveCoreDir}...`)
  fs.mkdirSync(braveCoreDir)
  util.runGit(braveCoreDir, ['clone', 
    util.getNPMConfig(['projects', 'brave-core', 'repository', 'url']), 
    '.'])
  util.runGit(braveCoreDir, ['checkout', braveCoreRef])
}

开发者API概览

虽然项目主要关注浏览器整体构建,但提供了多个可扩展的接口:

  1. 广告拦截系统:基于Rust实现的adblock引擎,可通过FFI接口调用
  2. 钱包集成:支持Web3 DApp交互和加密货币交易
  3. 隐私保护API:提供网站权限控制和追踪保护设置

典型开发场景

# 1. 克隆主仓库
git clone https://github.com/brave/brave-browser.git

# 2. 安装依赖并同步子模块
npm install
npm run sync -- --init

# 3. 按照平台指南配置构建环境

# 4. 执行构建命令(具体命令因平台而异)

核心代码

1. 项目初始化与依赖同步脚本

以下是Brave浏览器构建系统中初始化brave-core子模块的核心代码:

// Copyright (c) 2019 The Brave Authors. All rights reserved.
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// you can obtain one at http://mozilla.org/MPL/2.0/.

const fs = require('fs')
const Log = require('../lib/logging')
const path = require('path')
const { spawnSync } = require('child_process')
const util = require('../lib/util')

Log.progress('Performing initial checkout of brave-core')

const braveCoreDir = path.resolve(__dirname, '..', 'src', 'brave')
const braveCoreRef = util.getProjectVersion('brave-core')

// 检查brave-core目录是否存在,若不存在则克隆
if (!fs.existsSync(path.join(braveCoreDir, '.git'))) {
  Log.status(`Cloning brave-core [${braveCoreRef}] into ${braveCoreDir}...`)
  fs.mkdirSync(braveCoreDir)
  // 从NPM配置获取仓库URL并克隆
  util.runGit(braveCoreDir, ['clone', 
    util.getNPMConfig(['projects', 'brave-core', 'repository', 'url']), 
    '.'])
  // 切换到指定版本
  util.runGit(braveCoreDir, ['checkout', braveCoreRef])
}

// 获取当前提交ID用于日志记录
const braveCoreSha = util.runGit(braveCoreDir, ['rev-parse', 'HEAD'])
Log.progress(`brave-core repo at ${braveCoreDir} is at commit ID ${braveCoreSha}`)

// 设置平台相关的npm命令
let npmCommand = 'npm'
if (process.platform === 'win32') {
  npmCommand += '.cmd'
}

// 安装brave-core依赖
util.run(npmCommand, ['install'], { cwd: braveCoreDir })

// 执行同步命令,传递额外参数
util.run(npmCommand, ['run', 'sync' ,'--', '--init'].concat(process.argv.slice(2)), {
  cwd: braveCoreDir,
  env: process.env,
  stdio: 'inherit',
  shell: true,
  git_cwd: '.',
})

代码解析

  • 该脚本负责初始化brave-core子模块,这是Brave浏览器的核心组件
  • 使用Git命令克隆指定版本的brave-core仓库
  • 跨平台兼容性处理(Windows使用npm.cmd
  • 通过util.run执行外部命令,确保依赖正确安装
  • 支持参数传递,允许自定义同步行为

2. 项目结构与构建流程

根据项目概述,构建系统的主要架构如下:

brave-browser/
├── package.json          # 项目配置和依赖定义
├── src/
│   ├── brave/           # brave-core模块(挂载点)
│   │   ├── components/
│   │   │   └── adblock_rust_ffi/  # adblock-rust的FFI接口
│   │   └── DEPS         # Chromium依赖定义
│   └── chromium/        # Chromium源码(通过depot_tools获取)
├── lib/
│   ├── logging.js       # 日志工具
│   └── util.js          # 通用工具函数
└── scripts/
    └── sync.js          # 同步脚本(如上所示)

构建流程说明

  1. 依赖获取:通过depot_tools获取Chromium源码
  2. 版本同步:根据package.jsonDEPS文件同步各组件版本
  3. 补丁应用:brave-core维护对Chromium代码的修改补丁
  4. 编译构建:使用平台特定的工具链进行编译

3. 安全策略实现

项目严格遵循安全开发实践:

## 支持的版本
所有当前稳定发布版本及更高版本(与官网下载版本一致)

## 漏洞报告
通过HackerOne平台报告安全漏洞:https://hackerone.com/brave

## 安全增强示例
- 硬件钱包桥接通信的增强验证
- 定期Chromium安全更新合并
- 安全研究人员奖励计划

安全特性

  • 定期升级Chromium基础版本,集成安全补丁
  • 实施硬件钱包通信验证等额外安全层
  • 通过Hackerone平台管理漏洞披露和奖励

4. 贡献工作流程

项目提供了清晰的贡献指南,核心流程包括:

1. 问题分流:验证问题是否仍存在、提供重现步骤、识别重复问题

3. 代码贡献:遵循代码规范、提交详细的拉取请求
4. 翻译协助:通过Transifex平台帮助翻译界面文本

每个拉取请求应包括:
- 问题描述的清晰变更说明
- 测试覆盖证明
- 文档更新(如适用)
- 遵循代码风格指南

该项目通过模块化架构和自动化构建系统,使开发者能够高效地参与Brave浏览器的开发和改进工作。 Z88Bh7GKqQxJNR1QrJXlhZTOOT+9ac+6W90pNW0eSL0=