我正在使用[VpnService] (http://developer.android.com/reference/android/net/VpnService.html)!并能够创建 VPN 连接。我可以看到(跟踪)所有通过 VPN 的互联网流量。
现在,我的要求是绕过某些 URL 的 VPN(例如 www.google.com)。为了实现这一点,我编写了以下代码:
if (vpnService.protect(new Socket(InetAddress.getByName("74.125.225.241"), 80))) {
Log.d("TAG", "Socket protection for google.com is successfull");
}
但是在访问www.google.com时,我仍然可以在tracert上看到VPN服务器IP。因此,通过这段代码,VpnService 似乎并没有保护此请求不被发送到 VPN 服务器。
有人可以指出我哪里出错了,并建议正确的方法吗?
最佳答案
据我了解,您仅从 VPN 隧道中排除(保护)一个特定套接字。
因此,您使用同一目标打开的每个其他套接字仍会通过 VPN 隧道。
您必须在从您的设备向 Google 建立的每个套接字上调用 protected prepare(...)
。
关于Android VpnService 'protect' 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21112588/