[英]How can I send event data to Google Measurement Protocol via cURL without a browser generated user-agent?
我正在通過 Facebook 潛在客戶廣告生成潛在客戶。 我的服務器接受來自 Facebook 的 RTU,我可以根據需要將數據推送到我的 CRM。
我想在 Facebook 上填寫表格時向 GA 發送一個事件。
閱讀谷歌測量協議參考它指出:
user_agent_string – 是一個格式化的用戶代理字符串,用於計算以下維度:瀏覽器、平台和移動功能。
如果未設置此值,則不會計算上述數據。
我相信因為我試圖通過不涉及瀏覽器的 PHP webhook 腳本發送事件,所以請求失敗。
這是我正在運行的代碼的相關部分(我從 POST 更改為 GET 認為這可能是問題所在,一旦它工作,將其更改回 POST):
$eventData = [
'v' => '1',
't' => 'event',
'tid' => 'UA-XXXXXXX-1',
'cid' => '98a6a970-141c-4a26-b6j2-d42a253de37e',
'ec' => 'my-category-here',
'ea' => 'my-action-here',
'ev' => 'my-value-here
];
//Base URL for API submission
$googleAnalyticsApiUrl = 'https://www.google-analytics.com/collect?';
//Add vars from $eventData object
foreach ($eventData as $key => $value) {
$googleAnalyticsApiUrl .= "$key=$value&";
}
//Remove last comma for clean URL
$googleAnalyticsApiUrl = substr($googleAnalyticsApiUrl, 0, -1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $googleAnalyticsApiUrl);
curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
我相信這是導致問題的用戶代理,就好像我手動將相同的 URL 放入瀏覽器中,而不是嘗試點擊,事件立即出現在 GA 的實時跟蹤中。
所述 URL 的示例是:
我同時使用了 live 端點和 /debug/ 端點。 我的代碼不會毫無錯誤地提交給任何一個,但是如果我通過瀏覽器訪問相關的 URL,調試端點會說一切正常,然后在實時端點上,事件按預期到達 GA。
我知道curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
正在嘗試發送瀏覽器的用戶代理,我嘗試用諸如
“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36”
但它永遠不會被測量協議接受。
我的問題
我是否可以在不使用 web 瀏覽器的情況下將這些事件發送到 GA? 我曾經讓 Zapier 為我推送這些事件,所以我認為這是可能的。
如何通過 PHP 發送有效的 user_agent_string? 我試過用'CURLOPT_USERAGENT'來欺騙它,但從來沒有設法讓它們工作。
我遇到了同樣的問題:從我的瀏覽器中獲取收集 URL 就像一個魅力(我在實時視圖中看到了命中),但使用curl
或wget
沒有。 在終端上,用httpie
也戴上了。
我用 curl 發送了一個用戶代理curl
,這確實解決了這個問題。
所以我對@daveidivide 最后的評論感到困惑,他最初的假設是錯誤的(我的意思是,我知道他可能有兩個問題,但發送用戶代理 header 似乎是強制性的)。
根據我的經驗,谷歌分析只是避免跟蹤來自 cURL 或 wget(可能是其他人)的請求......也許是為了過濾掉不需要的噪音......? ♂️
任何包含字符串"curl"
的用戶代理請求都不會被跟蹤。 將 User-Agent header 覆蓋到幾乎所有其他內容,GA 將對其進行跟蹤。
如果您在使用 cURL 時忽略了覆蓋 User-Agent header,它將包含一個默認的 header 標識自己......並且 GA 將忽略該請求。
當使用像 Guzzle 這樣的package時也是這種情況,它還包括自己的默認用戶代理字符串(例如"GuzzleHttp/6.5.5 curl/7.65.1 PHP/7.3.9"
)。
只要您提供自己的自定義 User-Agent header,GA 應該會選擇它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.