谷歌测量协议给出奇怪的反应

时间:2018-12-12 10:44:44

标签: curl google-analytics php-7 guzzle measurement-protocol

我正在尝试使用php7和guzzle设置其余的API。当我使用cli在curl中将请求发送到调试网址时,我得到了一个不错的json响应

{
  "hitParsingResult": [ {
    "valid": true,
    "parserMessage": [ ],
    "hit": "/debug/collect?v=1\u0026t=pageview\u0026tid=UA-101927425-1\u0026uid=UA-101927425-1\u0026dh=ccp-test.vodafone.com\u0026dp=/iwsapi/user/verify/flow"
  } ],
  "parserMessage": [ {
    "messageType": "INFO",
    "description": "Found 1 hit in the request."
  } ]
}

但是如果我将其发送到产品url,我每次都会得到奇怪的响应

GIF89a▒▒▒▒▒,D;

有人知道如何解决吗?

这就是我在cli上运行的

curl -X POST -d 'v=1&t=pageview&tid=UA-xxxxxxxxx-1&uid=UA-xxxxxxxxx-1&dh=ccp-test.domain.com&dp=%2Fiwsapi%2Fuser%2Fverify%2Fflow' https://www.google-analytics.com/debug/collect

对于非调试模式,我只是删除调试

curl -X POST -d 'v=1&t=pageview&tid=UA-xxxxxxxxx-1&uid=UA-xxxxxxxxx-1&dh=ccp-test.domain.com&dp=%2Fiwsapi%2Fuser%2Fverify%2Fflow' https://www.google-analytics.com/collect

在枪口中,我像这样建造它

$promise = $guzzle->post("/debug/collect", [
                                'proxy' => [
                                    'http'  => 'http://proxy:8080',
                                    'https'  => 'http://proxy:8080', 
                                ],
                                'form_params'=>[
                                    'v'=>1,
                                    't'=>'pageview',
                                    'tid'=>GOOGLE_ID,
                                    'uid'=>$_SERVER['HTTP_CTVFNTUSERNAME'],
                                    'dh'=>WWWHOST,
                                    'dp'=>$_SERVER['REQUEST_URI'],
                                    //'dt'=>'homepage'
                                ]
                            ]);

2 个答案:

答案 0 :(得分:1)

  

Response Codes

     

如果接收到HTTP请求,则Measurement Protocol将返回2xx状态代码。如果有效载荷数据格式不正确,或者有效载荷中的数据不正确或未被Google Analytics(分析)处理,那么Measurement Protocol不会返回错误代码。

     

如果未获得2xx状态代码,则不应重试该请求。相反,您应该停止并更正HTTP请求中的所有错误。

无论如何,测量协议实际上并不会验证您的匹配,您唯一会收到的响应就是GIF89a▒▒▒▒▒,D的1x1像素图像;

因此,实际上没有任何事情可以解决其应有的问题。唯一会向您发送正确响应的是您似乎正在使用的调试端点

答案 1 :(得分:0)

您需要将User-Agent标头添加到请求中。 进一步的解释在这里: https://groups.google.com/g/google-analytics-measurement-protocol/c/VVaoSU-2FB4?pli=1