为什么即使使用代理,我的真实 IP 地址仍然可见?

Why is my real IP address still visible even when using a proxy?

我想了解我们的真实 IP 地址是如何被发现的,即使在通过私人独占(我是唯一的用户)高安全代理后也是如此。

PROXY_IP = "<private proxy IP>:<port>"

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=%s" % PROXY_IP)

driver = webdriver.Chrome(executable_path=".\driver\chromedriver.exe",
                          chrome_options=options)

driver.get("http://www.stayinvisible.com/")

该网站显示了一堆数据,它可以从您与它的交互中获取这些数据。它正确地列出了代理的 IP 地址,令我惊讶的是,它还将我们的 DSL IP 地址列为 "Additional IP".

这是怎么发生的,我们该如何预防?

一种想法是,他们可能以某种巧妙的方式使用 JavaScript/Java 来获取地理定位数据并将其发回给自己。我浏览了页面源代码,没有找到任何突出的内容(尽管我没有进行详尽的审查)。

编辑 1:

如果我使用不同的检查网站,他们似乎不会报告我的真实 IP。例如,这两个似乎都没有看到真正的 IP:

driver.get("http://simplesniff.com/")

driver.get("http://analyze.privacy.net/")

编辑 2:

根据其中一条评论,我尝试过:

driver.get("http://myhttp.info/")

任何地方都没有真实 IP 的迹象。我很想知道 stayinvisible.com 代码在做什么...

编辑 3:

我可能已经找到答案:WebRTC

https://www.privateinternetaccess.com/forum/discussion/8204/how-to-stop-webrtc-local-ip-address-leaks-on-google-chrome-and-mozilla-firefox-while-using-private-i

这显然影响了 Chrome 对 Windows 的影响。这正是我 运行 (对我很好)。我终于找到了一个检查 IP 泄漏的网站,告诉我他们如何获得真实地址后,我想通了:

driver.get("http://ipleak.net/")

我今天没有时间,但明天我会在 Windows 下检查 Firefox,也在 Ubuntu 桌面下检查 Chrome 和 OSX 只是三倍-检查。

编辑 4:部分解决方案

好吧,显然我不是坐等答案。

OK,我破解了第一期。我怀疑 http://simplesniff.com/ 使用 Flash 或 Java 来发现真实的 IP 地址。原来是Flash。很简单,通过 chrome://plugins 禁用它,然后重新加载验证。

要在代码中禁用 Flash:

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=%s" % PROXY_IP)    # Tell Chrome to use a proxy
options.add_argument("--disable-bundled-ppapi-flash")   # Disable internal Flash player
options.add_argument("--disable-plugins-discovery")     # Disable external Flash player (by not allowing it to load)

很有魅力。现在 http://simplesniff.com/ 无法嗅出真实的 IP 地址。

一个问题仍然存在:WebRTC。这可能会在 Windows 上使用 Chrome 无效,直到 Google 修复它。

我想我在编辑中回答了我自己的问题。归根结底,这是一个三头问题:Java、Flash 和 WebRTC。根据我对问题的编辑,Java 和 Flash 很容易处理。 WebRTC 似乎只是在 运行ning Chrome on Windows.

时才成为问题

在我们的例子中,最终代码库将 运行 在 Linux 服务器上使用 PhantomJS。这意味着上述问题中的 none 将成为一个问题。

我们确实有一个小型应用程序,为了方便起见,它会 运行 在 Windows 机器上运行。由于似乎有一个错误使使用 Firefox 和 Selenium 2.0 时有些问题,因此解决方案是 运行 在 Windows 主机上的 Ubuntu Workstation 虚拟机上的此代码库。在那种情况下 Chrome 应该表现良好,一切都会好的。