如何检测客户端是否正在使用VPN

问题描述 投票:0回答:5

如果您没有使用 VPN 进行连接,某些网站会将您重定向到其他地方或完全阻止您的连接。一个例子是 yts.mx(YIFY 种子下载网站);如果您没有使用 VPN 进行连接,此网站会将您重定向到警告不要使用您自己的 IP 的页面。

我猜这意味着该网站知道您是否连接了 VPN。这告诉我有一种方法可以知道用户是否通过 VPN 连接。

server proxy vpn
5个回答
1
投票

检测访问者是否位于 VPN 后面的 DIY 方法是获取所有 VPN 服务使用的所有 IP 列表,每天更新它们,因为它们不断变化,然后将访问者的 IP 与该列表进行比较。

你可以猜想,网站并没有这样做,因为维护工作量很大。相反,他们使用专门分析 IP 地址的实时 API,并拥有 VPN 服务使用的最新 IP 列表。

我的一个网站禁止 VPN 用户访问(因为地理位置很重要),所以我使用 Abstract IP Geolocation API https://www.abstractapi.com/ip-geolocation-api。它包含一个字段来指示该 IP 是否属于 VPN。

$ curl "https://ipgeolocation.abstractapi.com/v1/?api_key=KEY&ip_address=IP"
...
  "security": {
    "is_vpn": false
  }
...

1
投票

您可以使用每天更新最新代理数据的 IP2Proxy Web 服务。

如果您没有自己的 API 密钥,您可以从 https://www.ip2location.com/web-service/ip2proxy 获取它,但出于测试目的,您可以使用演示密钥。

<?php
$json = file_get_contents('http://api.ip2proxy.com/?ip=8.8.8.8&key=demo&package=PX10');
$arr = json_decode($json, true);

if ($arr['response'] == 'OK') {
    if ($arr['proxyType'] == 'VPN') {
        echo "IP address is a VPN.\n";
    }
    else {
        echo "IP address is not a VPN.\n";
    }
}
else {
    echo "Error.\n";
}
?>

0
投票

首先:没有万无一失的、有保证的 VPN 检测方法。检测 VPN 的一些方法可能是:

  • 检查IP是否属于数据中心网络而不是住宅ISP
  • 检查浏览器语言是否不匹配(Accept-Language HTTP 标头和 IP 位置)
  • 使用专门的 VPN 检测 API 服务,例如 https://focsec.com/

0
投票

取决于他们使用什么来确定用户是通过 VPN 还是代理服务器连接。一种方法是根据已知的 VPN 或代理服务器 IP 范围检查用户连接的 IP 地址。许多 VPN 和代理服务使用静态 IP 地址,很容易被识别并阻止。

另一种方法是执行浏览器指纹识别,检查浏览器中特定于 VPN 或代理的某些属性,如果找到可以确定相同的属性。

此外,可以通过分析网络级信息来检测某些 VPN 服务,例如所使用的协议、发送的数据包的大小和类型以及所使用的特定 VPN 软件或服务。

如果您没有时间为自己构建 VPN 检测系统,您可以将您的网站连接到现有选项(例如 IPQualityScore)的 API 并进行实时查找。


0
投票
  • 最常用的 VPN 检测方法是使用 IP 信誉黑名单(例如 firehol)或 IP 信誉 API(例如 maxmind)。这些依赖于 IP 的“声誉”,即过去的流量数据,因此可能不准确。
  • 您可以使用 IP 地理定位服务(例如 IPLocation)并检测位置不匹配来重定向用户。
  • 您还可以使用代理/VPN 检测 API,如 proxydetect
© www.soinside.com 2019 - 2024. All rights reserved.