我正在查看以下 URL 的结果,并想知道 Tor 项目网站如何“知道”Tor 是否被使用。
https://check.torproject.org/?lang=en-US&small=1&uptodate=1
我会设置一个数据包嗅探器,但由于我不是出口节点,我不确定这是否会有很大的不同。
我正在查看以下 URL 的结果,并想知道 Tor 项目网站如何“知道”Tor 是否被使用。
https://check.torproject.org/?lang=en-US&small=1&uptodate=1
我会设置一个数据包嗅探器,但由于我不是出口节点,我不确定这是否会有很大的不同。
在一行中:他们有一个所有出口节点的列表(类似的东西)。
我已经看到这篇文章演示了如何在 php 中检测 Tor 连接
function IsTorExitPoint(){
if (gethostbyname(ReverseIPOctets($_SERVER['REMOTE_ADDR']).".".$_SERVER['SERVER_PORT'].".".ReverseIPOctets($_SERVER['SERVER_ADDR']).".ip-port.exitlist.torproject.org")=="127.0.0.2") {
return true;
} else {
return false;
}
}
function ReverseIPOctets($inputip){
$ipoc = explode(".",$inputip);
return $ipoc[3].".".$ipoc[2].".".$ipoc[1].".".$ipoc[0];
}
一个很好的参考资料解释了它的作用在这里:
更新:
来自 Tor 官方文档,该文档描述了 TorDNSEL 方法,该方法减轻了测试 exitnodes ip list 的旧方法的缺点:
出于多种原因,确定连接是否来自 Tor 节点很有用。确定给定 IP 地址是否是 Tor 出口的早期尝试使用目录来匹配 IP 地址和退出策略。这种方法有许多缺点,包括当 Tor 路由器从与其 OR 端口侦听的不同 IP 地址退出流量时出现误报。基于 Tor DNS 的退出列表旨在克服这些问题并提供一个简单的界面来回答以下问题:这是 Tor 退出吗?
在 ruby 中,你有一个很酷的Tor.rb gem来实现这个技术:
Tor::DNSEL.include?("208.75.57.100") #=> true
Tor::DNSEL.include?("1.2.3.4") #=> false
他们知道什么是 Tor 出口节点地址。所以他们只是检查你的地址,看看它是否与出口节点之一匹配。
出口节点是整个 Tor 网络都知道的,如果你决定运行一个出口节点,那么你应该宣传它对吗?否则没有人会使用它。然后人们就会知道你的 IP 是一个 Tor 出口节点。简单的。
您可以使用TorDNSEL检查连接是否是 Tor 出口点;因此,可以编写一个脚本来检查每个连接。
“TorDNSEL 是针对 Tor 出口节点的主动测试、基于 DNS 的出口列表的实现。”