firefox - 我可以通过Javascript在浏览器本身中检测出Tor浏览器吗?

标签 firefox browser tor

如果浏览器是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的用户代理
  • 具有与浏览器窗口大小匹配的屏幕分辨率(特别是如果该大小是1000x800)
  • 时区为“0”(GMT)
  • 没有插件(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/

    相关文章:

    .net - AddressFamily.FireFox 在 .NET 套接字中指的是什么?

    json - 将自定义内容类型添加到 Firefox 应用程序处理程序?

    javascript - fancybox 仅适用于 chrome 和 FF 中的最后一张图像

    javascript - 将巨大的图像 (5mb) 加载到 svg 背景中会导致像素化和性能问题

    java - Android Eclipse 字符串 Txt + Edittext + 字符串 Txt = 崩溃

    python - DeprecationWarning : firefox_binary has been deprecated, 请使用 Selenium Python 中的参数 firefox_binary 传入 Service 对象

    首次运行后 Firefox 插件工具栏按钮消失

    browser - 为您的网站创建桌面快捷方式的可移植方式?

    python - 无法使用请求连接到 Tor,而我使用 selenium 也做了同样的事情

    c# - 在 geckofx 中显示 html