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

PHP如何检测来自WhatsApp等应用内链接跳转的访问来源

PHP识别客户端App内跳转来源的实现方案

常规网页跳转场景下确实可以通过$_SERVER['HTTP_REFERER']获取来源,但主流即时通讯App的内嵌WebView默认不会传递带App标识的Referer值,仅靠这个参数无法识别WhatsApp、Telegram、Messenger这类渠道,可通过以下多层方案组合实现识别:

1. User-Agent特征匹配(通用兜底方案)

各App的内嵌WebView发起请求时,会在User-Agent(UA)字符串中携带专属标识,这是无参数场景下覆盖率最高的识别方式,常见App的UA特征如下:

  • WhatsApp:iOS/安卓端UA均包含WhatsApp字段,部分旧版本会携带FB_IAB/WA4B(Facebook系内嵌浏览器的WhatsApp专属标记)
  • Telegram:UA包含Telegram字段,部分桌面端版本会携带TgWeb标识
  • Facebook Messenger:UA包含Messenger字段,同时会携带Facebook系App通用的FB_IAB标记
  • 微信/QQ:微信UA包含MicroMessenger,QQ UA包含QQ/专属字段

PHP端实现示例:

$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
$trafficSource = 'unknown';

// 匹配WhatsApp
if (stripos($userAgent, 'WhatsApp') !== false || strpos($userAgent, 'WA4B') !== false) {
    $trafficSource = 'whatsapp';
}
// 匹配Telegram
elseif (stripos($userAgent, 'Telegram') !== false) {
    $trafficSource = 'telegram';
}
// 匹配Messenger
elseif (stripos($userAgent, 'Messenger') !== false) {
    $trafficSource = 'messenger';
}

注意:UA可被手动篡改,该方案仅适用于普通流量统计场景,不能作为防刷、权益发放类场景的唯一判断依据。

2. 自定义UTM参数标记(准确率100%的方案)

如果是你自己可控的分享链路(比如站内生成的分享按钮、渠道投放链接),直接在投放到对应App的链接末尾追加专属来源参数是最可靠的方案:

  • 投放到WhatsApp的链接统一拼接?utm_source=whatsapp
  • 投放到Telegram的链接统一拼接?utm_source=telegram
  • 投放到Messenger的链接统一拼接?utm_source=messenger

用户点击跳转后,直接通过$_GET['utm_source']即可获取准确来源,完全不受App WebView隐私策略、版本差异的影响。如果是用户自发复制分享的无参数链接,再用上面的UA匹配方案做兜底即可。

3. 自定义请求头辅助判断

部分版本的App会在内嵌WebView发起请求时携带专属自定义请求头,比如部分版本WhatsApp会携带X-WhatsApp相关头、Telegram会携带X-Telegram-Chat头,但这类特征跨版本、跨系统的差异极大,覆盖率不足30%,仅能作为辅助校验维度,不能作为主判断逻辑。

注意事项

  • 不要依赖$_SERVER['HTTP_REFERER']判断App来源:90%以上的App内打开场景下,Referer要么为空,要么仅显示当前链接的域名,不会携带任何App相关标识
  • iOS 14+系统的App隐私限制会导致部分App的UA被模糊处理,这种场景下自定义参数是唯一可靠的识别方式
  • 如果用户把App内的链接复制到系统浏览器打开,UA不会携带App标识,这类场景本身不属于App内跳转,不需要计入对应渠道流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:48:19