Ответ 1
Проработав с поисковыми системами более 5 лет, я могу сказать вам, что нет стандартного способа получения значения запроса.
Как уже говорили вам другие ответы, первым шагом является проверка заголовка HTTP_REFERER
. Предполагая, что вы используете Rails, вы можете получить его из запроса
request.referrer
В противном случае вам нужно извлечь его из заголовков запроса другим способом.
Как только у вас есть реферер, вы окажетесь перед тремя основными возможностями:
- переменная пуста. извините, вы ничего не можете сделать
- переменная не пуста, это поисковая система
- переменная не пуста, это не поисковая система
Первый вариант прост. То, что вы хотите знать, - это ссылка на поисковую систему. Если это так, вам нужно извлечь запрос.
Самый распространенный способ сделать это - использовать контрольный список. Контрольный список обычно представляет собой список ключей/значений, в которых ключ является доменом поисковой системы и значением имени параметра строки запроса, который содержит значение запроса.
google.com,q
yahoo.com,p
...
Это тот же подход, который используется Google Analytics. Из файла ga.js
g.T=l("daum:q,eniro:search_word,naver:query,images.google:q,google:q,yahoo:p,msn:q,bing:q,aol:query,aol:encquery,lycos:query,ask:q,altavista:q,netscape:query,cnn:query,about:terms,mamma:query,alltheweb:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,aol:q,mama:query,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,pchome:q,kvasir:q,sesam:q,ozu:q,terra:query,mynet:q,ekolay:q,rambler:words");
Первый хост соответствует как ключу, так и значению, сначала выигрывает.