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

如何检测网页访问来源?无需URL参数识别Telegram等渠道来源

判断访问是否来自Telegram(无GET参数、无Referrer场景)

当用户通过Telegram内置浏览器打开链接时,即使$_SERVER['HTTP_REFERRER']为空,也可以通过请求头特征来识别;邮件渠道因无统一可识别标识,无法直接判断,以下是针对Telegram的实现方案:

核心判断依据

Telegram内置浏览器发起请求时,会携带特定的请求头标识,主要分为两类:

1. User-Agent字段特征

Telegram移动端、桌面端的内置浏览器,其User-Agent字符串中必然包含Telegram或TelegramDesktop关键字,示例格式:

Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36 Telegram/10.5.0

2. 自定义HTTP头(可选补充)

部分版本的Telegram会额外发送X-Telegram-Start-Param或X-Telegram-Share-Url自定义头,但这类头仅在特定场景存在,不能作为唯一判断依据。

PHP代码实现

直接读取$_SERVER全局变量中的请求头信息进行判断:

function isFromTelegram() {
    // 优先检查User-Agent中的Telegram标识
    $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : '';
    if (str_contains($userAgent, 'telegram') || str_contains($userAgent, 'telegramdesktop')) {
        return true;
    }

    // 可选:补充检查Telegram自定义请求头
    $hasTelegramCustomHeader = isset($_SERVER['HTTP_X_TELEGRAM_START_PARAM']) 
        || isset($_SERVER['HTTP_X_TELEGRAM_SHARE_URL']);
    if ($hasTelegramCustomHeader) {
        return true;
    }

    return false;
}

// 使用示例
if (isFromTelegram()) {
    echo "访问来自Telegram";
} else {
    echo "访问非Telegram来源";
}

注意事项

  • 邮件渠道无法通过此方式判断:邮件客户端的请求头无统一标识,且Referrer通常为空,没有可靠的识别依据。
  • User-Agent存在被伪造的可能,若需更高准确性,可结合Telegram官方的Web App机制(但该方案需配合Telegram Bot,超出当前无参数的需求范围)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:10:25