如果用户通过Tor连接,我希望能够显示消息或等。这不需要是完全安全的,它应该是客户端。如有必要,它可以使用外部API或站点来获取IP地址或类似内容。
答案 0 :(得分:2)
我使用此功能检查Tor的概率:
示例:
var isTor = true;
if (navigator.hardwareConcurrency && navigator.hardwareConcurrency !== 1) {
//This may not happen in Tor Browser because in Tor hardwareConcurrency is always 1
isTor = false;
}
if (window.devicePixelRatio && devicePixelRatio !== 1) {
//This may not happen in Tor Browser because in Tor devicePixelRatio is always 1
isTor = false;
}
checkTor_byCurTime()
//Do something...
checkTor_byCurTime();
//Do something again...
checkTor_byCurTime();
// <<< Here you can use isTor var >>>
function checkTor_byCurTime() {
if (performance.now() % 100 !== 0) {
//This may not happen in Tor Browser but in other browsers it happens almost every time
isTor = false;
}
}
如果您不需要同步检查,还可以添加setTimeout调用:
setTimeout(checkTor_byCurTime, 1);
setTimeout(checkTor_byCurTime, 2);
setTimeout(checkTor_byCurTime, 3);
setTimeout(checkTor_byCurTime, 5);
setTimeout(checkTor_byCurTime, 7);
setTimeout(checkTor_byCurTime, 11);
setTimeout(checkTor_byCurTime, 13);
以下是使用函数的polyfill:
if (!window.performance) window.performance = {};
if (!performance.now) performance.now = function() { return Date.now(); };
if (!Date.now()) Date.now = function() { return (new Date).getTime(); };
答案 1 :(得分:1)
Here是一个JavaScript文件,您可以加载该文件以查看访问者是否正在使用Tor。它会将window._isTor
设置为true
或false
,具体取决于加载脚本的远程IP是否来自Tor出口节点。
将其加载到您的页面上(域支持TLS 1.0 - TLS 1.2连接,无SSL):
<script src="//openinternet.io/tor/istor.js"></script>
检查:
<script>
if (typeof window._isTor != 'undefined' && window._isTor == true) {
// VISITOR IS USING TOR - code here
} else {
// not using Tor or the value was undefined
}
</script>
将其放入<head>
标签(会减慢页面加载时间)或推迟加载并在完成后检查值。
我将提供脚本的源代码(PHP),如果您愿意,可以动态生成该JavaScript。
我还计划尽可能长时间保持该网址的有效性 - 但不保证可用性,可靠性,或者它会保持多年。
编辑:应该注意的是,有一段时间Tor现在默认启用NoScript,这可能会阻止从另一个域加载的JS,所以这可能会也可能不起作用。