我试图了解即使在通过私有专用(我是唯一的用户)高安全性代理后,我们的真实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地址列为&#34;附加IP&#34;。
这是怎么发生的,我们如何防止它?
一个想法是,他们可能以一种聪明的方式使用JavaScript / Java来获取地理定位数据并将其发送回自己。我浏览了页面源代码,无法找到任何突出的内容(尽管我没有进行详尽的审核)。
编辑1:
如果我使用不同的支票网站,他们似乎无法报告我的真实IP。例如,这些中的任何一个似乎都看不到真正的IP:
driver.get("http://simplesniff.com/")
或
driver.get("http://analyze.privacy.net/")
编辑2:
根据其中一条评论,我试过了:
driver.get("http://myhttp.info/")
任何地方都没有真正知识产权的迹象。我很想知道stayinvisible.com
代码在做什么......
编辑3:
我可能找到了答案:WebRTC
这显然会影响Windows上的Chrome。这正是我正在运行的(很好地为我服务)。我终于找到了一个检查IP泄漏的站点,并告诉我他们如何获得真实地址后,我想出了这个:
driver.get("http://ipleak.net/")
我今天没有时间,但明天我会在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)
像魅力一样工作。现在http://simplesniff.com/无法嗅出真实的IP地址。
还存在一个问题:WebRTC。这可能会取消在Windows上使用Chrome,直到Google修复它。
答案 0 :(得分:2)
我想我在编辑中回答了我自己的问题。底线是这是一个三头问题:Java,Flash和WebRTC。根据我对这个问题的编辑,Java和Flash很容易处理。在Windows上运行Chrome时,WebRTC似乎只是一个问题。
在我们的例子中,最终的代码库将使用PhantomJS在Linux服务器上运行。这意味着上述问题都不会成为问题。
我们确实有一个小型应用程序,它将在Windows机器上运行,不方便。由于似乎存在使Firefox和Selenium 2.0有问题的错误,因此解决方案是在Windows主机上的Ubuntu Workstation虚拟机上运行此代码库。在这种情况下,Chrome应该表现良好并且一切都会很好。