如何用PHP获取YouTube来源链接中的视频ID?现有方案无效
嘿,我完全懂你的困扰——你想知道用户是从哪个具体的YouTube视频点进来的,但用HTTP_REFERER只能拿到https://www.youtube.com/,根本看不到带视频ID的完整路径对吧?这其实是YouTube自身的跳转机制导致的,咱们来一步步解决这个问题:
为什么HTTP_REFERER拿不到完整视频URL?
当用户点击YouTube视频描述里的链接时,YouTube会先经过一层内部跳转(比如安全校验、反垃圾跳转),这时候浏览器发送的referer就会被替换成YouTube的主域名,而非原始的带watch?v=xxx的视频页面URL。所以依赖HTTP_REFERER的方法在这里行不通。
靠谱的解决方案
方案一:手动给短链附加视频ID参数
这是最直接、最可靠的办法。你不需要依赖referer,而是在生成短链前,直接把视频ID作为参数加到trackid.php的链接里:
比如,针对视频ID为sampleID的视频,你要生成的原始链接是:
https://你的域名.com/trackid.php?video_id=sampleID
然后用goo.gl缩短这个带参数的URL,再放到对应视频的描述中。
之后在trackid.php里,就可以直接获取这个参数并记录:
// 获取视频ID,默认值设为unknown以防参数缺失 $video_id = isset($_GET['video_id']) ? $_GET['video_id'] : 'unknown'; // 输出或记录视频ID echo "点击来自YouTube视频ID:" . $video_id; // 这里可以添加代码,把video_id、访问时间、IP等信息存入数据库或日志文件
方案二:用UTM参数做更全面的追踪
如果你需要更详细的追踪维度(比如区分来源平台、活动名称),可以使用UTM参数,把视频ID放到utm_content字段里:
原始链接示例:
https://你的域名.com/trackid.php?utm_source=youtube&utm_medium=video_description&utm_campaign=夏季推广&utm_content=sampleID
在PHP中获取视频ID的代码:
$video_id = isset($_GET['utm_content']) ? $_GET['utm_content'] : 'unknown';
这种方式适合需要整合到分析工具里的场景,能和其他数据打通。
方案三:尝试其他HTTP头(不推荐)
理论上可以检查$_SERVER['HTTP_ORIGIN']或者其他自定义头,但YouTube的安全策略基本会阻止这些头携带完整的视频路径,所以成功概率极低,不建议依赖。
总结
优先选方案一,它完全不受浏览器或YouTube跳转规则的限制,能精准追踪每个视频的点击来源,实现成本也最低。
内容的提问来源于stack exchange,提问作者Luca Le

