Как получить поисковый запрос реферера от Google?


Всего два дня назад для получения поискового запроса от 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), и похоже, что способ обработки запросов на ссылки в Google изменился. Ранее $запрос включал

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

Теперь, однако, я получаю следующий вывод, когда $запрос повторяется:

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

Есть ли способ обойти это?

Author: Fluffeh, 2012-08-29

4 answers

Извините, но это глобальное изменение политики Google.

См. веб-ссылку

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

Это означает, что пользователь должен войти в учетную запись Google. Вы можете попробовать это сами: если ваш URL-адрес поиска Google начинается с https://, это означает, что Google скроет некоторые параметры для сохранения конфиденциальности.

 11
Author: ivan133, 2015-01-11 04:57:09

Я тоже столкнулся с той же проблемой на этой неделе. Я не уверен, что это все еще актуально для вас, но я обнаружил, что Google инициировал поиск SSL (Secure Sockets Layer) для пользователей, которые вошли в систему около года назад, и похоже, что поиск SSL теперь может быть применен ко всем поисковым запросам Google. Когда я тестировал это, я не был зарегистрирован в Google и использовал Firefox, но все равно получил зашифрованный ссылочный запрос.

В этой статье содержится некоторая полезная информация и некоторые идеи для работы без конкретных данных поискового запроса: http://searchenginewatch.com/article/2227114/5-Tips-for-Handling-Not-Provided-Data

 1
Author: moiraine, 2013-01-18 19:52:13
    // 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);
}
 1
Author: slva2000, 2013-12-23 05:19:25

Google инициировал SSL для всех поисковых запросов, и информация доступна только через Google Analytics. Однако для платных кампаний поисковые системы, такие как Google, Bing и Yahoo, используют параметры строки запроса, такие как utm_parameters, и вы можете получить доступ к поисковому запросу с помощью параметра utm_term.

 0
Author: user2386411, 2018-01-04 19:17:57