脚本如何分类分析流量来源

wen 实用脚本 24

本文目录导读:

脚本如何分类分析流量来源

  1. 基于 URL 参数(UTM 与自定义参数)
  2. 基于 HTTP Referrer(来源页)
  3. 基于用户行为与设备指纹(行为聚类)
  4. 基于 IP 与地理信息(渠道环境分类)
  5. 实战:如何编写一个完整的“流量分类脚本”?
  6. 高级分类:脚本如何处理“复杂场景”?
  7. 总结:脚本分类的 3 层漏斗

这是一个非常专业且深入的运营或数据分析问题,要“分类分析流量来源”,核心在于通过脚本来解析请求(Request)中的关键参数,进而将流量打上“来源标签”。

脚本(无论是运行在服务器端如Node.js/Python,还是运行在客户端如JavaScript)通常通过以下四大维度来进行分类分析:

基于 URL 参数(UTM 与自定义参数)

这是最直接的分类方式,流量来源方(如广告平台、邮件、社交媒体)会在链接后追加参数。

脚本分析逻辑:

// 示例:JavaScript 脚本解析 UTM
const urlParams = new URLSearchParams(window.location.search);
const source = urlParams.get('utm_source');   // google, newsletter, facebook
const medium = urlParams.get('utm_medium');   // cpc, email, social
const campaign = urlParams.get('utm_campaign'); // spring_sale
// 分类逻辑
if (source === 'google' && medium === 'cpc') {
    classifyAs('付费搜索流量');
} else if (source === 'newsletter' && medium === 'email') {
    classifyAs('邮件营销流量');
}

分类标准:

  • 直接流量: 无任何 UTM 参数,且 Referrer 为空或为自身域名。
  • 付费搜索: utm_medium=cpc, utm_source=google/baidu
  • 社交媒体: utm_medium=social, utm_source=facebook/twitter
  • 邮件营销: utm_medium=email
  • 自然搜索: 无 UTM,但 document.referrer 来自搜索引擎。

基于 HTTP Referrer(来源页)

如果用户没有携带 UTM 参数,脚本可以通过读取 Referer 请求头(或前端 document.referrer)来判断。

脚本分析逻辑(伪代码):

# Python 后端脚本
def classify_by_referrer(referrer_url):
    if not referrer_url:
        return "直接访问/书签"
    elif "google.com" in referrer_url or "bing.com" in referrer_url:
        return "自然搜索流量"
    elif "facebook.com" in referrer_url or "t.co" in referrer_url:
        return "社交媒体流量"
    elif "zhihu.com" in referrer_url or "reddit.com" in referrer_url:
        return "外链/社区流量"
    else:
        return "其他外链流量"

缺点: Referrer 可能被屏蔽或修改(如通过 meta 标签、JS 跳转、HTTPS->HTTP 时空白)。

基于用户行为与设备指纹(行为聚类)

当以上显性参数缺失时,脚本可以通过用户进入后的第一跳行为来反推来源。

脚本分析逻辑(数据分析脚本):

  • 对比系数法: 脚本记录用户进入时浏览的页面深度。
    • 如果用户进入即访问了一个特定活动页(如 /landing/black_friday),且该页面仅在某广告中出现,则归类为“特定广告流量”。
  • 时间窗口匹配: 脚本记录用户访问时间,与广告投放排期交叉匹配。
  • 设备指纹: 如果用户在同一设备上,15分钟前点击了邮件链接(未转化),现在直接输入网址,脚本可将其修正为“邮件二次回流”。

基于 IP 与地理信息(渠道环境分类)

脚本通过解析用户 IP 归属地或运营商来分类。

分类示例:

  • 国内/国外: 区分海内外流量。
  • 运营商: 区分 电信/联通/移动 流量(常用于网盟推广)。
  • 局域网/代理: 这部分通常标记为“异常流量”,不计入主要分类。

实战:如何编写一个完整的“流量分类脚本”?

假设你需要写一个 Python 后端脚本来处理日志/请求:

import re
from urllib.parse import urlparse, parse_qs
def classify_traffic(request):
    # 1. 获取参数
    referrer = request.headers.get('Referer', '')
    url = request.url
    user_agent = request.headers.get('User-Agent', '')
    ip = request.remote_addr
    # 2. 解析 URL 参数
    parsed_url = urlparse(url)
    params = parse_qs(parsed_url.query)
    utm_source = params.get('utm_source', [None])[0]
    utm_medium = params.get('utm_medium', [None])[0]
    utm_campaign = params.get('utm_campaign', [None])[0]
    # 3. 分类逻辑(优先级:付费 > 自然 > 直接)
    # 第一类:付费广告(通过 UTM 参数)
    if utm_source:
        if utm_medium == 'cpc':
            return f"付费搜索-{utm_source}"
        elif utm_medium == 'display':
            return f"展示广告-{utm_source}"
        elif utm_medium == 'email':
            return "邮件营销"
        else:
            return f"其他UTM-{utm_medium}"
    # 第二类:自然搜索(通过 Referrer)
    if referrer:
        if 'google' in referrer:
            return "自然搜索-Google"
        elif 'bing' in referrer:
            return "自然搜索-Bing"
        elif 'facebook' in referrer:
            return "社交媒体-Facebook"
        else:
            return f"外链-{urlparse(referrer).hostname}"
    # 第三类:直接流量(无 Referrer,无 UTM)
    return "直接流量"
# 输出示例
print(classify_traffic(request_obj))

高级分类:脚本如何处理“复杂场景”?

流量来源分析常被误导,脚本需要加入去伪逻辑

伪像 脚本排查方法
社交平台内置浏览器 判断 User-Agent 是否包含 FBANTwitterMicroMessenger
Telegram/QQ 转发 脚本检测 sec-ch-ua 头部中的 platform 是否非原生浏览器。
爬虫/机器人 脚本先过滤 User-Agent 中的 botspider
自动跳转/追踪失陷 检查 Session 中是否有 click_idtrans_id,用数据库匹配。
跨域流量污染 脚本使用 document.referrer 时,需清除 location.hash 中的参数。

脚本分类的 3 层漏斗

  1. 第一层(硬分类): 解析 utm_sourcereferrer,这是最简单的规则引擎脚本。
  2. 第二层(软分类): 结合会话时长页面深度判断流量质量(新用户 vs. 老用户,深度浏览 vs. 跳出率)。
  3. 第三层(归谬分类): 针对“直接流量”做二次回溯——检查用户最近 24 小时是否有过广告点击(Cookie/IDFA 匹配)。

如果你需要特定场景的脚本代码(比如针对 Google Analytics 4 的服务器端追踪脚本,或者针对某地小程序的流量分析),可以告诉我具体的平台或语言(Python/JS/Nginx日志),我可以帮你定制一段分类脚本。

抱歉,评论功能暂时关闭!