Skip to content

广告地域定向投错了钱?用IP定位先验一下流量

做投放的朋友应该都见过这种场景:广告后台明明定向了"上海",数据报表里转化也不错,但投放出去的预算,总感觉哪不对劲。等仔细一扒才发现,真正来自上海的流量少得可怜,大量点击其实是机房和代理流量。

这篇讲一个很实用的做法:用IP定位给广告流量做"先验",在上线前就看清流量成色,把钱花在刀刃上。

广告流量里的"水分"从哪来

数字广告是刷子重灾区,流量水分主要来自三类:

  • 机房/IDC流量:脚本在云服务器上自动点击,伪装成真人;
  • 代理/VPN流量:IP归属地和用户真实位置对不上;
  • 地域错配:你投上海,但大量点击来自别处,只是广告系统给了个"上海"的标签。

这三类,IP查询都能照出来。

怎么做流量"体检"

第1步:给落地页埋点,记录访客IP

在广告落地页加一段统计代码,把访客IP、来源、点击时间都记下来:

javascript
// 页面加载时上报
fetch('/track?ip_hint=' + (window.location.host), { method: 'GET', keepalive: true });

实际落地时,IP在服务端拿,前端记下来源渠道(比如 utm_source)就行。

第2步:批量分析IP画像

把一段时间收集的IP拿出来,批量查归属地和IP类型。重点看两个指标:

python
def analyze(tracked_ips):
    from collections import Counter
    prov = Counter()
    ip_type = Counter()
    for ip in tracked_ips:
        info = query_ip(ip)   # 查IP9
        if info:
            prov[info.get("prov") or info.get("country")] += 1
            ip_type[info.get("ip_type", "unknown")] += 1
    return prov, ip_type

第3步:看这几个数

① 地域匹配率:投上海,落地页IP里"上海"占比多少?低于预期,说明广告系统的地域标签和实际不符。

② IDC占比ip_type 里IDC的比例如果超过10%,说明刷子不少。真人不会跑在机房IP上。

③ 活跃时段:刷子的点击经常集中在凌晨,真人不是。配合时间维度看更准。

一个判断模板

python
def ad_quality(ip_type_counter, target_prov, prov_counter):
    idc_ratio = ip_type_counter.get("IDC", 0) / max(sum(ip_type_counter.values()), 1)
    target_ratio = prov_counter.get(target_prov, 0) / max(sum(prov_counter.values()), 1)

    print(f"机房IP占比: {idc_ratio:.1%}")
    print(f"目标地区占比: {target_ratio:.1%}")

    if idc_ratio > 0.1:
        print("警告:刷子流量偏高,建议排查渠道")
    if target_ratio < 0.5:
        print("警告:地域定向疑似失准")

体检完了怎么用

  • 上线前:用历史数据先测一轮,不合格的渠道直接砍掉;
  • 投放中:定期抽样体检,异常流量来源及时暂停;
  • 回传数据:把IP维度的高风险标记回传给广告平台,帮它优化。

我帮人做过一次,某渠道的"上海"点击里,机房IP占了三成——这个渠道后来被直接停了,预算省下来一大截。

别把话说死

IP判断是"信号"不是"铁证"。机房IP也可能有真人在用(比如企业办公),地域对不上也可能是出差。所以我的建议是:把它当体检指标,不当执法依据,决策前多看几个维度。

免费的IP查询接口先跑起来:https://www.ip9.com.cn