问题标签 [networkextension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
435 浏览

ios - 使用 NEKit 在 iOS NEPacketTunnelProvider 中代理 websocket 连接

当我在 iOS 上使用 Charles Proxy 并玩一些游戏时,我发现它们使用协议前缀“socket://”后跟 IP 地址(而不是主机名,其他 HTTP(s) 连接始终存在)建立连接)。我假设那些是websockets。

目前,我正在尝试实现一个工具来跟踪基本的网络活动。为了存档,我将NEKit( https://zhuhaow.me/NEKit/ ) 与NEPacketTunnelProvideriOS 扩展结合使用。使用它,我能够设置本地 HTTP 代理服务器并设置网络接口以通过该本地代理重定向每个 HTTP(s) 请求。通过观察者,我能够看到所有请求的主机名。

现在我发现,一些游戏(那些使用 websockets 的游戏)在我的解决方案中不能正常工作。关于这个讨论https://news.ycombinator.com/item?id=16694670似乎代理 HTTP(s) 数据流不能让我处理 websocket 连接:

是的,但是 Charles 的问题(好吧,至少与 iOS 相关)是 iOS websockets 不通过配置的 HTTP 代理。它们只是被认为是原始套接字。因此,即使在桌面 Charles 上,它也是一个 nogo。

因此,某些应用程序在我的跟踪器启用时甚至无法运行,因为它们无法建立与服务器的连接。

GCDHTTPProxyServer由于( NEKit) 和NEProxySettings( NetworkExtension) 的组合仅适用于 HTTP(s),是否有可能为 websocket 连接存档类似的内容?如何跟踪和(甚至更好)代理 websocket 连接?

0 投票
0 回答
107 浏览

ios - iOS:通过NetworkExtension框架获取下载、上传和下载速度

我可以从 NetworkExtension 框架中获取它吗?我在 VPN 应用程序中使用它,需要从当前连接中获取信息。我需要下载和上传多少 MB 以及下载速度的数据。

0 投票
1 回答
402 浏览

ios - 在ios中将数据流重定向到wifi或蜂窝

我不想将我的 iPhone 数据重定向到 wifi 或蜂窝网络。基于一些标准。是否可以将整个 iPhone 数据重定向到特定接口,例如 wifi 或蜂窝。?

我听说这可以使用 VPN 完成,但不知道如何完成。对此有什么帮助吗?

0 投票
1 回答
351 浏览

ios - 网络扩展日志

我有这样的示例 Go 示例:

我用 Go mobile 构建了这个项目,并从 iOS 应用程序调用它,一切正常。我可以在 Xcode 的调试面板中看到登录信息。但是当我将它与网络扩展链接并调用“hi”函数时,我在控制台或 xcode 调试面板中看不到任何东西。

将 Go 框架构建到 iOS 并在网络扩展中运行时如何显示日志?

0 投票
2 回答
2698 浏览

ios - NEHotspotConfigurationManager 收到此警报:“无法加入网络" 而错误为零

所以我试图通过关闭器来监控连接状态:

然而,在错误为零的情况下,我收到此警报“无法加入网络”,有什么想法吗?

0 投票
1 回答
546 浏览

ios - 如何通过终止主机应用程序关闭我的数据包隧道扩展

现在我已经使用 iOS 11+ 的网络扩展 API 实现了一个简单的数据包隧道扩展。我想让它成为仅限应用程序的 VPN,以便来自我的应用程序的流量可以通过我们的 VPN 和代理进行隧道传输。所以,我的问题是

  1. 如何在用户切换到其他应用程序时停止隧道 - 一种选择是使用应用程序委托方法-(void)applicationWillResignActive:(UIApplication *)application-(void)applicationDidEnterBackground:(UIApplication *)application.
  2. 如果用户通过强制退出直接终止应用程序,那么 VPN 也应该关闭 - 我们可以使用-(void)applicationWillTerminate:(UIApplication *)application但当我尝试时它有时无法正常工作。
  3. 当应用程序崩溃时,如何处理相同的情况。- 作为一种解决方法,我正在考虑实现类似乒乓机制的东西,如果应用程序处于活动状态,那么它应该继续 ping 或更新将由数据包隧道扩展访问的任何共享数据。因此,如果应用程序停止或退出,Tunnel 会知道应用程序的不活动状态,它会自行停止隧道。
  4. 为了保持 VPN 隧道处于活动状态,我们需要定期更新令牌,因此有什么方法可以更新 VPN 首选项并立即反映更改而无需重新启动(停止并重新启动)隧道。

请针对上述情况提出适当的解决方案或解决方法。这对我会有很大的帮助。

0 投票
0 回答
961 浏览

ios - 即使在使用 NetworkExtension 传递用户名和密码后,iOS 仍然显示“需要代理身份验证”对话框

我正在使用NETunnelProviderManagerHTTP/HTTPS 代理实现 VPN。

我有来自代理服务器的基本身份验证来对其进行身份验证,并且我需要定期更新密码。

因此,要为代理服务器设置凭据,我已经实现了如下所示的一些想法:

设置此详细信息后,我正在保存首选项,并且在下次启动时,如果我加载首选项,我可以找到我在那里设置的值。但是,当我启动 VPN 并开始通过 VPN(Proxy) Proxy 访问任何内容时,它会立即显示 dialog Proxy Authentication Required。只是为了仔细检查,如果我检查日志,self.vpnManager.protocolConfiguration我可以清楚地看到我的密码和用户名,但仍然会显示一个对话框,用于手动输入代理的用户凭据。

需要代理身份验证

如果有人能告诉我为什么我已经配置的代理密码和用户名不被考虑,如果我以编程方式在NEProxyServer

任何人都可以建议一些可以帮助我在后台自动更新凭据而不要求用户输入代理凭据的东西,比如我们在NSURLSession's case 中的委托?

任何回应和帮助都将是可观的。

0 投票
1 回答
238 浏览

ios - 黑白 self.packetFlow.ReadBytes 与套接字读取的区别

我正在尝试从数据包隧道 NEPacketTunnelProvider 读取数据。现在我正在做的是尝试使用

功能。它似乎工作正常。但是现在我想通过使用 self.packetFlow 函数的网络句柄来读取数据包,就像这样

并使用此文件描述符从隧道中读取数据包数据。像这样

但是现在当我像这样从套接字读取数据时。似乎数据与我之前使用 self.packetFlow 收到的数据不相似。

有没有人知道为什么会这样。我应该怎么做才能获得与 self.packetFlow.readPackets 中类似的数据。

任何帮助指针将不胜感激。

0 投票
1 回答
54 浏览

localhost - iOS无法连接localhot

httpNEPacketTunnelProvider. 我知道这是一个独立的过程。但是,我可以使用102.168.0.xx:ip同一 wifi 中的另一台设备连接到它,但无法localhost:ipiOSsafari 中使用。

0 投票
0 回答
164 浏览

c# - 带有 Objective-C 网络扩展的 MacOS C# Xamarin 应用程序

我正在为 MacOS 和 iOS 编写一个应用程序,它使用 NetworkExtension 来提供一些 VPN 功能。它是用 C# 编写的 Xamarin.Forms 应用程序,NetworkExtension 也是用 C# 编写的。这在 MacOS 上按预期工作,但在 iOS 中,我们达到了 15MB 内存限制并且扩展被终止。从扩展中剥离了所有可能的额外 C# 依赖项以保持其内存占用较小,我们最终仍会达到该限制。

我的假设是,包括 C# 运行时本身会占用大量内存。为了避免这种情况并尽可能精简扩展,我计划在 Objective-C 中重新实现它。那么问题是如何将 C# 应用程序与 Objective-C NetworkExtension 捆绑在一起?据我所知,VisualStudio 不允许我简单地将 Objective-C 项目添加到 C# 解决方案中。还有另一种方法可以做到这一点吗?