Работая с поисковыми системами более 5 лет, я могу сказать, что стандартного способа получения значения запроса не существует.
Как уже сказали другие ответы, первым шагом является проверка заголовка HTTP_REFERER
. Предполагая, что вы используете Rails, вы можете получить его из запроса
request.referrer
В противном случае вам нужно извлечь его из заголовков запроса другим способом.
Если у вас есть реферрер, то перед вами 3 основных варианта:
- переменная пуста. извини, ты ничего не можешь сделать
- переменная не пустая, это поисковая система
- переменная не пустая, это не поисковая система
Первый вариант прост. То, что вы хотите знать, является ли реферал поисковой системой. Если это так, то вам нужно извлечь запрос.
Самый распространенный способ сделать это - использовать контрольный список. Контрольный список обычно представляет собой список ключа / значения, где ключом является домен поисковой системы, а значением - имя параметра строки запроса, который содержит значение запроса.
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");
Первый хост соответствует ключу и значению, первый выигрывает.