11

就在两天前,以下代码用于从 google 获取搜索查询:

$refer = parse_url($_SERVER['HTTP_REFERER']);
$host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);

if(strstr($host,'www.google.com'))
{
    //do google stuff
    $qstart = strpos($query, 'q=') +2;
    $qend = strpos($query, '&', $qstart);
    $qlength = $qend - $qstart;
    $querystring = substr($query, $qstart, $qlength);
    $querystring = str_replace('q=','',$querystring);
    $keywords = explode('%20',$querystring);
    $keywords = implode(' ', $keywords);
    return $keywords;                      
    }

但是,现在没有了。我使用 echo($query) 对其进行了测试,看来谷歌处理引荐来源网址查询请求的方式已经改变。以前包含 $query

"q=term1%20term2%20term3%20...

但是,现在,当回显 $query 时,我得到以下输出:

sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCsQFjAB&url=http%3A%2F%2Fexample.com%2F&ei=vDA-UNnxHuOjyAHlloGYCA&usg=AFQjCNEvzNXHULR0OvoPMPSWxIlB9-fmpg&sig2=iPinsBaCFuhCLGFf0JHAsQ

有没有办法解决这个问题?

4

4 回答 4

12

很抱歉,这是全球 Google 政治的变化。

见网页链接

http://googlewebmastercentral.blogspot.ru/2012/03/upcoming-changes-in-googles-http.html

这意味着如果用户登录 Google 帐户。您可以自己尝试一下:如果您的 Google 搜索 url 以 https:// 开头,这意味着 Google 将隐藏一些临时参数以保护隐私。

于 2013-04-04T04:52:42.570 回答
1
    // take the referer
$thereferer = strtolower($_SERVER['HTTP_REFERER']);
// see if it comes from google
if (strpos($thereferer,"google")) {
    // delete all before q=
    $a = substr($thereferer, strpos($thereferer,"q="));     
    // delete q=
    $a = substr($a,2);
    // delete all FROM the next & onwards
    if (strpos($a,"&")) {
        $a = substr($a, 0,strpos($a,"&"));
    }   
    // we have the results.
    $mygooglekeyword = urldecode($a);
}
于 2013-12-23T05:19:25.093 回答
1

本周我也遇到了同样的问题。我不确定这是否仍然与您相关,但我发现 Google 为大约一年前登录的用户启动了 SSL(安全套接字层)搜索,看起来 SSL 搜索现在可能适用于所有谷歌搜索查询。当我对此进行测试时,我没有登录 Google 并且使用的是 Firefox,但仍然获得了加密的引用查询。

本文有一些有用的背景和一些在没有特定搜索词数据的情况下工作的想法:http ://searchenginewatch.com/article/2227114/5-Tips-for-Handling-Not-Provided-Data

于 2013-01-18T19:52:13.693 回答
0

谷歌为所有搜索启动了 SSL,信息只能通过谷歌分析获得。但是,对于付费活动搜索引擎(如 Google、Bing 和 Yahoo)使用查询字符串参数(如utm_parameters),您可以从参数utm_term访问搜索查询。

于 2018-01-04T19:17:57.860 回答