分析用戶從搜索引擎點擊進入網站時攜帶的關鍵詞,是 SEO 優化、內容推薦、用戶畫像的重要數據來源。本文提供一個通用的 PHP 函數,支援主流中文搜索引擎的 Referer 解析。
<?php
function search_word_from() {
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
// 百度
if (strstr($referer, 'baidu.com')) {
preg_match("|baidu.+wo?r?d=([^&]*)|is", $referer, $tmp);
$keyword = urldecode($tmp[1]);
$from = 'baidu';
}
// Google (含 .com/.cn)
elseif (strstr($referer, 'google.com') || strstr($referer, 'google.cn')) {
preg_match("|google.+q=([^&]*)|is", $referer, $tmp);
$keyword = urldecode($tmp[1]);
$from = 'google';
}
// 360 搜索 (so.com)
elseif (strstr($referer, 'so.com')) {
preg_match("|so.+q=([^&]*)|is", $referer, $tmp);
$keyword = urldecode($tmp[1]);
$from = '360';
}
// 搜狗
elseif (strstr($referer, 'sogou.com')) {
preg_match("|sogou.com.+query=([^&]*)|is", $referer, $tmp);
$keyword = urldecode($tmp[1]);
$from = 'sogou';
}
// 搜搜
elseif (strstr($referer, 'soso.com')) {
preg_match("|soso.com.+w=([^&]*)|is", $referer, $tmp);
$keyword = urldecode($tmp[1]);
$from = 'soso';
}
else {
$keyword = '';
$from = '';
}
return array('keyword' => $keyword, 'from' => $from);
}
// 測試調用
$word = search_word_from();
if (!empty($word['keyword'])) {
echo '關鍵字:' . $word['keyword'] . ' 來自:' . $word['from'];
}
?>
Referer 頭,包含來源頁面 URLwd=關鍵詞 或 word=關鍵詞q=關鍵詞urldecode() 還原中文| 限制因素 | 影響 | 應對方案 |
|---|---|---|
| HTTPS 加密搜索 | Referer 不傳遞或脫敏 | 接入搜索引擎站長平台 API 獲取關鍵詞報表 |
| 用戶隱私模式/插件 | Referer 被清空 | 結合站內搜索、落地頁參數追蹤 |
| 移動端 App 內瀏覽器 | Referer 格式不標準 | 適配各大 App 的 User-Agent 與 Referer 特徵 |
| 搜索引擎改版 | 參數名/域名變更 | 建立可配置的規則庫,定期維護更新 |
雖然 Referer 解析在全站 HTTPS 時代效果遞減,但作為輕量級、零成本的補充分析手段,仍具備實際價值。