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

如何在Chromium中限制页面加载 查阅omni box及navigator.cc代码未找到线索

Chromium 限制页面加载功能实现指引

核心实现逻辑

限制页面加载的最佳拦截时机早于地址栏输入解析、navigator.cc导航提交阶段,直接在导航请求的初始入口做校验即可,无需修改过多上层逻辑。

具体修改点

1. 主页面导航拦截(最核心入口)

所有主页面导航请求都会经过content/browser/renderer_host/navigation_request.cc中的NavigationRequest::BeginNavigation方法,在此处添加校验规则即可覆盖所有场景的主页面加载限制:

  • 新增自定义URL校验函数,支持黑名单、白名单、规则匹配等任意限制逻辑
  • 校验不通过时直接调用FailNavigation终止导航,无需走后续加载流程
    代码示例:
// 插入到NavigationRequest::BeginNavigation方法的最开头
GURL current_url = common_params_.url;
// 自定义校验逻辑,返回false表示禁止加载
if (!CustomURLValidator::GetInstance()->CheckURLValid(current_url)) {
  FailNavigation(net::ERR_BLOCKED_BY_ADMINISTRATOR, /*is_early_cancel=*/true);
  return;
}

2. 地址栏输入前置拦截(可选优化)

如果需要在用户输入地址后、发起导航前就拦截,减少无效流程,可以修改chrome/browser/ui/omnibox/omnibox_edit_controller.cc中的OpenURL方法:

  • 在跳转逻辑执行前先调用自定义校验逻辑
  • 校验不通过时直接弹出提示,不发起导航请求,响应速度更快

3. 子资源加载拦截(可选,适用于需要限制页面内资源的场景)

如果需要同时限制页面内的iframe、脚本、图片等子资源加载,可通过Chromium的URLLoaderThrottle体系实现全局拦截:

  • 继承URLLoaderThrottle实现自定义限流类,在WillStartRequest方法中做资源URL校验
  • 在ContentBrowserClient::CreateURLLoaderThrottles方法中注册自定义的throttle,即可对所有资源请求生效

开发注意事项

  • 所有自定义规则建议抽成独立的单例管理类维护,保证不同拦截点的规则统一
  • 错误码直接使用Chromium原生的net::ERR_BLOCKED_BY_ADMINISTRATOR即可,前端会自动匹配对应的错误提示页,无需额外开发错误页面
  • 如果需要支持动态更新限制规则,无需重新编译,可以把规则存储在浏览器Prefs配置中,校验时直接读取配置即可

内容的提问来源于stack exchange,提问作者Mayank Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:06:03