【问题标题】:How do you detect if a client is using a VPN如何检测客户端是否在使用 VPN
【发布时间】:2020-12-08 03:05:00
【问题描述】:

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

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

【问题讨论】:

标签: server proxy vpn


【解决方案1】:

DIY 检测访问者是否在 VPN 后面的方法是获取所有 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
  }
...

【讨论】:

    【解决方案2】:

    您可以使用每天更新最新代理数据的 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";
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多