为什么即使使用代理,我的真实 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
这显然影响了 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 应该表现良好,一切都会好的。
我想了解我们的真实 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
这显然影响了 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 应该表现良好,一切都会好的。