我正在运行一个 asp.net mvc 网站,我想阻止每个通过 TOR 访问我的网站的用户。现在我有两个解决方案:
- 每小时下载一次 TOR 出口节点列表,将该列表存储在内存中,并使用该列表检查每个请求 IP 地址。
- 尝试使用 Windows 防火墙阻止 TOR 出口节点 - 我认为这会更好,但我不知道该怎么做。
还有其他可能的解决方案吗?你们中的任何人可能有与我类似的问题吗?你是怎么解决的?
答案绝对是您列出的第二个选项。无论您使用哪种解决方案,您都必须经常下载已知出口节点 IP 的列表,但使用已经存在的防火墙比滚动您自己的原始副本要简单得多。
如何将 IP 添加到防火墙取决于您的 Windows 版本。可以在此处找到以前的 StackOverflow 问题,其答案包括解释如何通过 Windows Server 2008 防火墙以编程方式阻止 IP 地址的链接。
这里( https://github.com/RD17/DeTor ) 是一个简单的 REST API,它使用TorDNSEl来确定请求是否来自 TOR 网络。例如,我认为从 C# 和 RESTSharp 中使用它会非常简单。
请求是:
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' />