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

mar*_*n's 5 python proxy selenium google-chrome selenium-chromedriver

我试图了解即使在通过私有专用(我是唯一的用户)高安全性代理后,我们的真实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/")
Run Code Online (Sandbox Code Playgroud)

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

这是怎么回事?我们如何防止它?

一种想法是,他们可能以一种聪明的方式使用JavaScript/Java来获取地理位置数据并将其发送回自己.我通过页面源扫描,找不到任何突出的东西(虽然我没有做详尽的审查).

编辑1:

如果我使用不同的检查网站,他们似乎不会报告我的真实IP.例如,这些中的任何一个似乎都看不到真正的IP:

driver.get("http://simplesniff.com/")
Run Code Online (Sandbox Code Playgroud)

要么

driver.get("http://analyze.privacy.net/")
Run Code Online (Sandbox Code Playgroud)

编辑2:

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

driver.get("http://myhttp.info/")
Run Code Online (Sandbox Code Playgroud)

在任何地方都没有真正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-一世

这显然会影响Windows上的Chrome.这正是我正在运行的(很好地为我服务).我终于找到了一个检查IP泄漏的网站,告诉我他们是如何获得真实地址的,我想出了这个:

driver.get("http://ipleak.net/")
Run Code Online (Sandbox Code Playgroud)

我今天没有时间,但明天我将在Windows下检查Firefox,在Ubuntu桌面和OSX下检查Chrome只是为了三重检查.

编辑4:部分解决方案

好吧,显然我不是在等待答案.

好的,我破解了第一个问题.我怀疑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)
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.现在http://simplesniff.com/无法嗅出真实的IP地址.

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

mar*_*n's 2

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

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

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