如果浏览器是Tor浏览器,我想禁用正在构建的Web应用程序的某些功能。我可以在浏览器本身(客户端,而不是服务器端)内部查明浏览器是否是Tor浏览器吗?
我希望使用一种解决方案,该解决方案不会发出任何HTTP请求来针对Tor导出节点匹配浏览器的IP。
背景:在我的情况下,Tor浏览器弹出一个对话框,询问用户“Tor Browser是否应允许该网站提取HTML5 Canvas 图像数据?”,因为Tor浏览器表示, Canvas 图像数据可用于唯一地标识浏览器。
更新:阅读以下答案后:也许对我而言,最好的解决方案是在服务器端保留Tor导出节点列表(最新列表,并定期刷新),然后在浏览器加载页面时,如果浏览器的IP与这样的导出节点<script>
相匹配,我会在var isProbablyTorBrowser = true
标记中设置一个变量。然后,在客户端,不需要其他请求或复杂的逻辑。
最佳答案
Tor浏览器的设计并非不可检测(这是不可能的)。相反,它的设计目的是使所有副本彼此之间无法区分:您不能严格通过browser fingerprinting来跟踪浏览器从一个站点到另一个站点,或从一个站点到另一个站点的访问。
这为其赋予了独特的指纹。截至目前,浏览器
Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
的用户代理navigator.plugins
为空)可能是TBB浏览器。当下一个Firefox的ESR版本发布时,User-Agent字符串可能会更改,最有可能是
Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/38.0
。单独的屏幕分辨率/浏览器窗口匹配可以唯一地标识TBB:即使在全屏模式下,Firefox中的窗口高度和屏幕高度之间也存在一像素的差异。
关于firefox - 我可以通过Javascript在浏览器本身中检测出Tor浏览器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200567/