使用QWebView进行IP别名设置(Qt/C++)

7
让我们看看你是否能帮我解决问题。 [使用Qt Creator C++和Qt 5.2]
情况:我有一台PC,为同一接口分配了几个本地IP地址(IP别名)。路由器针对每个本地IP具有不同的带宽、NAT、连接等配置。我正在将这个本地IP切换集成到一些Qt应用程序中,特别是一个使用QWebView提供良好浏览体验的应用程序。
我需要的是:能够更改QWebView使用的本地IP以获取其请求。
我唯一做到的事情——只是一个补丁——是使用STUNNEL通过不同的本地IP将localhost端口映射到远程主机,并使用QNetworkProxy使QWebView使用这些localhost端口作为代理。问题在于,出现了某些问题造成此类代理似乎会导致一些问题:用户无法看到几个YouTuve视频,只能看到静态背景和“An error has occurred”。当使用NetworkProxyFactory :: setUseSystemConfiguration(true)时,这种情况不会发生,因为可以完美地观看每个视频。
问题是:如何使用Qt管理IP别名?如果这不可能,您是否有任何想法为什么通过STUNNEL进行代理失败?也许有其他透明隧道软件可以尝试?
输入将不胜感激。提前致谢!

1
如果我没记错的话,插件(例如视频播放、Flash等)可能会忽略路由/代理设置。这就是为什么Flash等插件可以使匿名技术失效的原因。它们可能会尝试使用全局设备路由而不是您应用程序的整体设置。 - Sebastian Lange
这对我的一个问题非常有帮助,谢谢! - lgvidal
@lgvidal 请查看以下链接:https://dev59.com/yFzUa4cB1Zd3GeqP7_Ck,https://dev59.com/HWIi5IYBdhLWcg3w8AJy,http://qt-project.org/forums/viewthread/34849,http://serverfault.com/questions/542530/ip-alias-and-port-bridging。 - Khaled.K
@KhaledAKhunaifer 我不太明白这些问题与此问题有什么关系。也许最后一个问题有点相关,但并不能真正帮到你。你是人类吗? - lgvidal
1个回答

2

QWebView使用QNetworkAccessManager来处理请求/响应。唯一有用的重写内容是一个虚拟的

QNetworkReply * QNetworkAccessManager::createRequest(Operation op, 
const QNetworkRequest & req, QIODevice * outgoingData = 0) [virtual protected]

很遗憾,它没有真正对您的目的有用。

另外,我认为Bearer也不会起作用。

所以,根据您需要此功能的程度,建议您在QNetworkAccessManager中进行更改,以便能够传递允许接口/ IP地址列表,因此QTcpSocket将绑定到指定的IP地址..然后将此AccessManager设置为WebView。

据我所知,QNetworkAccessManager不支持指定绑定地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接