浏览器辅助对象 (BHO) 是专为 Microsoft 的 Internet Explorer 设计的动态链接库 (DLL) 模块,旨在增强其功能。它由 Microsoft 开发,旨在使开发人员能够创建插件和扩展,以修改浏览器的行为、拦截 Web 请求或添加新功能。
浏览器辅助对象(BHO)的诞生与历史
BHO 最初由 Microsoft 在 1997 年发布 Internet Explorer 4.0 时引入。此举是 Microsoft 为用户创造更可定制、更多样化的网页浏览体验而做出的广泛努力的一部分。BHO 是 Windows 操作系统的一部分,是 Internet Explorer 所独有的,不兼容 Mozilla Firefox、Google Chrome 或 Safari 等其他浏览器。不过,其他平台也开发了类似的技术,例如 Chrome 的扩展程序和 Firefox 的附加组件。
深入了解浏览器辅助对象 (BHO)
BHO 本质上是 Internet Explorer 每次启动时加载的 COM(组件对象模型)对象。BHO 有多种形式,从工具栏和扩展程序到旨在提高浏览效率的更复杂的工具。它们与浏览器在同一个进程空间中运行,因此功能非常强大。
然而,它们的强大功能也伴随着潜在的漏洞。BHO 可以不受限制地访问浏览器的所有事件和属性,这意味着它们可以监控和操纵网络流量、修改网页,甚至控制导航。不幸的是,这种潜力使它们成为恶意软件作者和网络犯罪分子的诱人目标。
浏览器辅助对象(BHO)的内部结构及操作
BHO 的内部操作涉及 IObjectWithSite 接口的实现。此接口允许 BHO 知道它何时从 Internet Explorer 内存中加载或卸载。BHO 接收事件通知,并可据此执行其功能。
Internet Explorer 启动时,它会查询 Windows 注册表中所有已注册的 BHO,并将它们加载到浏览器的进程空间中。从这里,BHO 可以与网页的文档对象模型 (DOM) 交互、修改内容,并与 Internet Explorer 公开的其他 COM 接口交互。
浏览器辅助对象 (BHO) 的主要功能
BHO 的主要特点包括:
-
可扩展性:BHO 提供了一个多功能平台,用于扩展和定制 Internet Explorer 的功能。
-
功能:由于 BHO 在浏览器的进程空间内运行,因此它们可以广泛访问和控制浏览器事件和属性。
-
灵活性:BHO 可以执行广泛的功能,从修改 Web 内容等简单任务到处理事件和请求等更复杂的任务。
-
多功能性:BHO 可用于开发各种浏览器工具,包括工具栏、扩展和其他交互功能。
浏览器辅助对象 (BHO) 的类型
鉴于 BHO 提供的广泛可能性,它们具有多种不同的形式:
类型 | 描述 |
---|---|
工具栏 | 为 Internet Explorer 添加附加工具栏功能的 BHO |
扩展 | 提供附加浏览器功能的 BHO |
广告软件 | 旨在展示广告或收集营销数据的 BHO |
恶意软件 | 旨在实现有害目的(例如数据窃取或系统破坏)的 BHO |
使用、问题和解决方案
BHO 被广泛用于创建自动填表、广告拦截器或附加工具栏等功能。然而,它们也被用来创建间谍软件和广告软件,从而导致安全和隐私问题。
为了管理 BHO 并降低潜在风险,用户可以使用 BHO 管理器。这些工具允许用户从系统中启用、禁用或删除 BHO。保持软件和安全补丁为最新、使用可靠的防病毒软件以及定期扫描恶意软件也有助于防范恶意 BHO。
与类似术语的比较
学期 | 描述 |
---|---|
苯甲酸酯 | 特定于 Internet Explorer 的 COM 对象,支持浏览器扩展 |
Chrome 扩展程序 | 它们基于 HTML、CSS 和 JS,扩展了 Google Chrome 的功能 |
Firefox 附加组件 | 它们以 JavaScript 编写,为 Mozilla Firefox 添加了功能 |
Safari 扩展 | 他们使用 HTML、CSS、JavaScript 和原生代码来增强 Safari 的功能 |
未来前景和技术
截至我所知的 2021 年 9 月,由于 Microsoft 弃用 Internet Explorer,BHO 的未来似乎不确定。它的替代品 Microsoft Edge 使用基于 Chromium 的不同模型,它支持类似于 Google Chrome 的扩展程序而不是 BHO。这种转变意味着开发人员可能会专注于交叉兼容的扩展技术而不是 BHO。
代理服务器和浏览器辅助对象 (BHO)
代理服务器和 BHO 可以以各种方式交叉。例如,可以开发一个 BHO 来管理 Internet Explorer 中的代理设置,根据预定义规则或用户输入自动在不同的代理之间切换。然而,此功能越来越多地由内置浏览器功能或跨兼容扩展提供。