0

我正在开发一个插件,我需要为给定的主机获取浏览器代理。

现在它使用nsIProtocolProxyService工作。但是,NewURI 函数(需要构造一个 URI 对象,由 nsIProtocolProxyService::resolve()使用)采用对nsACString的 const 引用 。看起来,对于它的任何具体实现,我都需要与xpcomglue链接,这是我做不到的(如果我理解正确,出于技术原因,我不应该动态链接;出于法律原因,我不能与 xpcomglue_s 静态链接) .

那么,如何在不与 xpcomglue 链接的情况下获得浏览器代理?

4

2 回答 2

2

这绝对是一个棘手的问题。确实,最好的方法(如果可能)是尽可能使用 NPN_GetURL/NPN_PostURL 样式的 NPAPI 函数。如果那是不可能的,除非您可以依赖最新的浏览器版本,否则您或多或少会陷入困境。

如果你可以假设一个最新版本的 Firefox / gecko API(我很确定 Firefox 3.6 支持这个,但不确定是哪个开始的;文档说 gecko SDK 1.9,但我不认为它在那里)那么你可以使用NPN_GetValueForURL和 NPNURLVProxy 来获取给定 URL 的代理信息。

同样,请记住,这仅适用于较新的浏览器,而且我还没有机会编译支持它的兼容性矩阵;我计划将它添加到FireBreath,但它没有进入 1.4,所以可能需要再过一个月才能实现。

作为故障转移选项,如果此选项不可用,最常见的解决方案是简单地获取 WinInet(Internet Explorer)的代理配置并相信它是相同的。

这是(IMO)一个没有真正好的修复的重要问题。这就是 Flash 在跨代理网络访问方面出了名的善变的原因。

于 2011-02-09T01:22:22.153 回答
0

你不应该开发使用 XPCOM 的 NPAPI 插件;请参阅Mozilla 的文档。也许您可以使用 Firefox 扩展来完成您尝试做的至少一部分,并使用 JS 绑定在它和您的插件之间进行通信。

于 2011-02-09T00:12:42.927 回答