Как получить поисковый запрос реферера от 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
Есть ли способ обойти это?
4 answers
Извините, но это глобальное изменение политики Google.
См. веб-ссылку
Http://googlewebmastercentral.blogspot.ru/2012/03/upcoming-changes-in-googles-http.html
Это означает, что пользователь должен войти в учетную запись Google. Вы можете попробовать это сами: если ваш URL-адрес поиска Google начинается с https://, это означает, что Google скроет некоторые параметры для сохранения конфиденциальности.
Я тоже столкнулся с той же проблемой на этой неделе. Я не уверен, что это все еще актуально для вас, но я обнаружил, что Google инициировал поиск SSL (Secure Sockets Layer) для пользователей, которые вошли в систему около года назад, и похоже, что поиск SSL теперь может быть применен ко всем поисковым запросам Google. Когда я тестировал это, я не был зарегистрирован в Google и использовал Firefox, но все равно получил зашифрованный ссылочный запрос.
В этой статье содержится некоторая полезная информация и некоторые идеи для работы без конкретных данных поискового запроса: http://searchenginewatch.com/article/2227114/5-Tips-for-Handling-Not-Provided-Data
// 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);
}
Google инициировал SSL для всех поисковых запросов, и информация доступна только через Google Analytics. Однако для платных кампаний поисковые системы, такие как Google, Bing и Yahoo, используют параметры строки запроса, такие как utm_parameters, и вы можете получить доступ к поисковому запросу с помощью параметра utm_term.