我需要一个阻止的脚本TOR servers
......php
我需要获取服务器列表并阻止它们。
或者,安装在服务器(centos)上的任何解决方案。
这是有关 TorDNSEL https://www.torproject.org/projects/tordnsel.html.en 以及如何构造查询的更多信息。
下面是我在网上找到的可以执行动态检查的功能。
(https://check.torproject.org/必须使用与此类似的内容)。
我不确定在较重的流量下的性能。
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];
}
您需要检查用户的 ip 是否在 TOR 出口节点 DNSBL 中。使用静态退出节点列表不是一个好主意,因为节点会不时出现/消失,您可能不想定期更新列表。
存在各种黑名单,EFNET RBL就是其中之一。请注意,它还解决了在某些情况下可能被认为不受欢迎的一些其他 IP - 如果您只希望 TOR 确保忽略这些其他结果。
如果它需要阻止 TOR 用户 id,请按照以下方法:
ipset -N tor iphash
获取可以访问的 Tor 出口节点列表$YOUR_IP
,跳过注释并逐行阅读
wget
ipset -q -A tor $IP
done
在 itables 过滤器中过滤我们的新集合
iptables -A INPUT -m set --match-set tor src -j DROP.
这里( https://github.com/RD17/DeTor ) 是一个简单的 REST API,用于确定请求是否来自 TOR 网络。我认为从 PHP 中使用它会非常简单
请求是:
curl -X GET http://detor.ambar.cloud/
。
回应是
{
"sourceIp": "104.200.20.46",
"destIp": "89.207.89.82",
"destPort": "8080",
"found": true
}
作为奖励,您可以向您的网站添加徽章以检测用户是否来自 TOR:
<img src='http://detor.ambar.cloud/badge' />