如何检测VPN或代理连接?

Zac*_*ano 15 vpn proxy

我想阻止使用VPN或代理的服务器的所有连接.无论如何都检测到正在使用VPN或代理连接?如果没有,无论如何我可以检查VPN或代理的使用可能性吗?最后,是否有任何我可以查询或提示用户检查他们是否使用VPN或代理,以便如果有人通过,我可以尝试执行其他验证?我不需要用户提供任何信息,例如位置,真实IP或类似的信息.我只是想完全禁止来自VPN或代理的连接.

编辑:我一直在想我可能会运行一个测试,看看ping到VPN IP和客户端的可检测延迟之间是否存在一致的差异,但这听起来非常不可靠.

编辑2:代理或VPN服务器可能比标准的家庭连接有更多的端口打开,因此我可以使用打开的端口数量来帮助通过对连接人员进行端口扫描来衡量来自VPN的连接的可能性.

Las*_*lko 15

不幸的是,没有适当的技术方法来获取您想要的信息.您可能会发明一些测试,但这些测试与现实的相关性非常低.所以要么你没有抓住你想要的那些,要么你会有更多的误报.两者都不能被认为是有意义的.

从Internet服务器向后生成任何类型的流量以响应传入的客户端(端口扫描,甚至简单的ping)通常是不受欢迎的.或者,在端口扫描的情况下,对您来说可能更糟糕,例如当客户端位于中央企业防火墙后面时,最糟糕的是当客户端来自中央政府网络防火墙池后面时......

坦率地说,基于IP的禁令(或实际上,任何类型的限制都集中在不完全拥有其公共IP地址的人:代理服务器,VPN,NAT设备等)长期以来一直是不现实的,并且作为IPv4池在世界上许多地方,ISP已经越来越耗尽,ISP正在将越来越多的客户置于大型NAT池之后(本周我国消息称,最大的ISP,德国电信的子公司,已经开始发布私有IPv4地址作为对客户来说,标准的业务方式是,人们必须明确要求提供商获取公共IP地址,因此这样做的目的越来越少.如果要禁止客户端,则应根据身份(帐户)禁止客户端,而不是基于IP地址.

  • 不幸的是,玩家可以随时更改任何标识符,因此根据其"身份"进行禁止根本无济于事. (2认同)
  • @ZachSugano 您可以要求他们创建一个帐户并验证他们的电子邮件地址。如果他们删除所有 cookie 并创建新帐户,您将无法阻止他们。 (2认同)
  • @ZachSugano好吧,如果你让他们支付一些小额金额,让我们用Paypal说0.50美元,你将拥有不易伪造或生成新身份的身份. (2认同)
  • Netflix 在这方面做得非常好。想知道如何 (2认同)

Ben*_*ing 7

在 IPinfo,我们提供了一个隐私检测 API,它会让您知道连接是否来自 VPN、匿名代理、tor 出口节点或托管提供商(可用于隧道流量)。下面是一个例子:

$ curl ipinfo.io/43.241.71.120/privacy?token=$TOKEN
{
    "vpn": true,
    "proxy": false,
    "tor": false,
    "hosting": true
}
Run Code Online (Sandbox Code Playgroud)

如果您想阻止从 VPN 到您站点的连接,那么您可以发出 API 请求以获取此信息,如果检测到它是 VPN,则回复错误。在 PHP 中,它看起来像这样:

$ip = $_SERVER['REMOTE_ADDR'];
$url = "http://ipinfo.io/{$ip}/privacy?token={$IPINFO_API_TOKEN}";
$details = json_decode(file_get_contents($url));
// Just block VPNs
if($details->vpn) { 
    return echo "VPN Access Blocked!";
}

// Or we could block all the other types of private / anonymous connections...
if($details->vpn || $details->proxy || $details->tor || $details->hosting) { 
    return echo "Access Blocked!";
}    
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢这项服务以及它对开发人员的友好程度,但不幸的是它无法检测 Opera VPN(代理)。刚刚尝试过。 (3认同)

S W*_*S W 5

最简单的方法是使用外部服务(例如API)来阻止VPN或代理用户。

MaxMindGetIPIntel都通过API提供,您可能需要尝试一下。GetIPIntel提供免费的API服务,因此建议您首先尝试。

对于OpenVPN,有人使用唯一的MSS值来标识VPN连接,但是设置很复杂,可能现在需要“修补”。

您在编辑中提到的策略似乎不是一个好主意,因为您会遇到很多误报。每当它们连接到您的服务时发送端口扫描将需要大量时间和资源才能获得结果。