如何在 Electron 应用程序中禁用网络?

Posted

技术标签:

【中文标题】如何在 Electron 应用程序中禁用网络?【英文标题】:How to disable networking in Electron app? 【发布时间】:2021-12-04 23:42:58 【问题描述】:

我正在开发一个离线应用,出于安全考虑,我想禁用网络。

这可能吗?如果是这样,怎么做?感谢您的帮助!

【问题讨论】:

联网是指如果 BrowserWindow 试图导航到一个不是本地文件的 URL,那么它应该被停止吗? 感谢@Joshua 的帮助。我想禁用所有网络功能,因此应用程序无法连接到 Internet。例如,如果一个包裹试图打电话回家。顺便说一句,我是 Electron 新手,所以也许这是默认完成的。 重复***.com/questions/47953464/… 【参考方案1】:

此答案仅适用于渲染器进程,不适用于主进程

您可能想要使用网络仿真:

const  session  = require('electron');

session.defaultSession.enableNetworkEmulation(
  offline: true,
);

// Or

window.webContents.session.enableNetworkEmulation(
  offline: true,
);

大概相当于打开开发工具,使用网络节流。

关于文档:https://www.electronjs.org/docs/latest/api/session#sesenablenetworkemulationoptions

【讨论】:

enableNetworkEmulation 的有趣用法。感谢分享! 我的直觉是,这个解决方案不会阻止流氓 npm 包在节点级别调用 home。对吗? 是的,它不会阻止主进程连接到互联网,我不确定是否有办法阻止整个应用程序连接到互联网,可能是 App Store 或 Microsoft不授予互联网权限的商店签名?但我从未使用过签名,所以我不知道它的功能。

以上是关于如何在 Electron 应用程序中禁用网络?的主要内容,如果未能解决你的问题,请参考以下文章

Electron应用在任务栏中创建闪烁窗口

在运行的应用程序中查看 electron-builder 的构建目标

如何测试电子生成器自动更新流程?

如何在智能手机中运行网络应用程序时禁用任何来电?

如何在 iOS 网络应用程序中禁用橡皮筋?

如何以编程方式检测是不是在 Windows 桌面应用程序中启用/禁用了 javascript? (网络浏览器控件)