【问题标题】:How to get the referer search query from google?如何从 google 获取referer 搜索查询?
【发布时间】:2012-08-24 06:23:40
【问题描述】:

就在两天前,以下代码用于从 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

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

【问题讨论】:

  • 我遇到了同样的问题。你找到解决办法了吗?

标签: php search-engine google-search


【解决方案1】:

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

查看网页链接

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
          // 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);
      }
      

      【讨论】:

        【解决方案4】:

        Google 为所有搜索启动了 SSL,并且该信息只能通过 Google Analytics 获得。 但是,对于 Google、Bing 和 Yahoo 等付费活动搜索引擎,使用查询字符串参数,例如 utm_parameters,您可以通过参数 utm_term 访问搜索查询。

        【讨论】:

          猜你喜欢
          • 2013-01-30
          • 2013-09-22
          • 1970-01-01
          • 1970-01-01
          • 2011-10-10
          • 2012-01-12
          • 2016-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多