检测用户是否在代理服务器后面


Detect if user is behind a proxy server

我知道这个问题已经被问过几次了,但我就是找不到解决方案!我有一个约会网站,有人通过代理注册(我猜),向我的用户发送垃圾邮件,并创建虚假账户。

我如何检测用户是否在像Vtunnel, Hidemyass, TOR等代理后面?我知道没有保证的方法,但像pof.com这样的网站(大量的鱼)有很好的代理检测。

我只是需要从某个地方开始…即使我只能检测到最流行的代理网站

除非代理使用特殊的标头,如X-Forwarded-For,否则您无法将其与普通用户区分开来。由于这些"黑色"代理并不那么天真(记住,它们的目的是保护用户),您唯一的选择是IP黑名单——就像Project Honeypot提供的那样。

相亲网站和依赖用户生成内容的类似网站总是会面临这个问题。一个简单的检查是测试报头中是否有任何表示代理的内容。这可能会导致某些移动连接误报:

    $proxy_headers = array(
        'HTTP_VIA',
        'HTTP_X_FORWARDED_FOR',
        'HTTP_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_FORWARDED',
        'HTTP_CLIENT_IP',
        'HTTP_FORWARDED_FOR_IP',
        'VIA',
        'X_FORWARDED_FOR',
        'FORWARDED_FOR',
        'X_FORWARDED',
        'FORWARDED',
        'CLIENT_IP',
        'FORWARDED_FOR_IP',
        'HTTP_PROXY_CONNECTION'
    );
    foreach($proxy_headers as $x){
        if (isset($_SERVER[$x])) die("You are using a proxy!");
    }

这将只捕获最低质量的代理。匿名和开放代理总是会逃避这些测试,所以从那里你可以检查DNS黑名单,如项目蜜罐,尽管这仍然会在保护中留下空白。

如果不建立自己的复杂系统,阻止这些欺诈账户的最好方法是使用第三方服务,如:FraudLabs, MaxMind或IPQualityScore。

这是一个老问题。然而,在过去几年中,VPN检测的主要发展可能有助于解决这个问题。在地理定位服务提供商从IP地址使用中收集足够的数据后,可以使用IP地址范围来检测VPN提供商。

一个例子是使用像https://github.com/ip2location/ip2proxy-php这样的库来查询商业或免费的IP2Proxy数据库。

你应该看看IPDetector,它是一个API,在其数据库中包含数百万个IP地址,它允许你检测IP是否良好(主机/VPN/代理…)