You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过IP地址识别网站访客是否为企业?附PHP获取IP代码

通过IP识别访客企业主体的实现方案

你已经完成了访客IP的获取,但当前代码存在两个小问题:HTTP_X_FORWARDED_FOR可能返回多个IP(逗号分隔),且未过滤私有/保留IP段,先修正下你的IP获取逻辑:

<?php
function getIp(){
    $ip = '';
    // 优先处理X_FORWARDED_FOR,取第一个有效公网IP
    if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        foreach($ips as $ip_item){
            $ip_item = trim($ip_item);
            // 排除私有IP、保留IP段
            if(filter_var($ip_item, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){
                $ip = $ip_item;
                break;
            }
        }
    }
    // 若X_FORWARDED_FOR无有效IP,再取CLIENT_IP
    if(empty($ip) && !empty($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    // 最后兜底取REMOTE_ADDR
    if(empty($ip)){
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

echo '用户IP地址是:'.getIp();
?>

接下来,通过IP识别企业主体的核心逻辑是IP归属数据与企业IP资源的匹配,具体实现步骤如下:

1. 解析IP的WHOIS注册信息

每个公网IP段都有对应的WHOIS注册记录,其中会包含IP所属的机构/企业名称,你可以通过PHP调用本地WHOIS工具获取并解析:

$user_ip = getIp();
// 调用系统whois命令获取信息(需服务器安装whois客户端)
$whois_content = shell_exec("whois $user_ip");

// 提取注册机构名称(不同地区的WHOIS字段可能不同,需适配)
preg_match('/OrgName: (.*)/i', $whois_content, $org_matches);
preg_match('/Organization: (.*)/i', $whois_content, $org_matches2);

$company_name = '';
if(isset($org_matches[1])) $company_name = trim($org_matches[1]);
elseif(isset($org_matches2[1])) $company_name = trim($org_matches2[1]);

if(!empty($company_name) && strpos($company_name, 'Inc.') !== false || strpos($company_name, 'Co., Ltd') !== false){
    echo "访客来自企业:{$company_name}";
}else{
    echo "无法识别为企业IP";
}

2. 对接企业专属IP数据库

商业化的企业IP数据库会收录大量企业办公网络、专属IP段的数据(需购买本地授权版本),你可以将IP转换为整数后,与数据库中的IP段范围对比:

// 将IP转换为无符号整数,方便范围查询
function ipToUInt($ip){
    return sprintf("%u", ip2long($ip));
}

$target_ip_int = ipToUInt(getIp());
// 假设数据库表enterprise_ips包含start_ip_int、end_ip_int、company_name字段
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'db_user', 'db_pass');
$stmt = $pdo->prepare("SELECT company_name FROM enterprise_ips WHERE start_ip_int <= :ip AND end_ip_int >= :ip");
$stmt->bindParam(':ip', $target_ip_int, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

if($result){
    echo "访客企业:{$result['company_name']}";
}else{
    echo "未匹配到企业IP段";
}

3. 辅助特征验证(提升准确率)

仅靠IP可能存在误差,可结合以下特征辅助判断:

  • 检查IP是否关联企业官方域名(通过反向DNS查询:gethostbyaddr($user_ip))
  • 分析User-Agent:企业用户常使用带有企业管理工具标识的浏览器/设备
  • 结合访问行为:固定时段批量访问、高频访问企业合作/采购类页面等

注意事项

  • 云服务商IP段(如阿里云、AWS)可能被多个企业共用,需结合云服务商的IP归属数据进一步筛选
  • 隐私保护的IP段无法获取有效WHOIS信息,这类情况只能标记为"无法识别"
  • 代理、VPN会导致IP归属失真,需在代码中优先过滤这类场景

内容的提问来源于stack exchange,提问作者Jules Ndanga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:15:39