Как определить, кто переадресовывает поисковый запрос на мой сайт? - PullRequest
13 голосов
/ 13 февраля 2010

Привет,

Я пытаюсь выяснить, какой запрос используется для перенаправления людей на мой сайт. Я был бы признателен, если бы кто-нибудь мог сказать мне, какой вызов API я должен изучить. Я уверен, что это возможно с javascript, а также с ruby ​​и php, так что любая технология в порядке.

Просто ради обучения, я не против знать, что мне следует использовать для всех трех :)

Ответы [ 5 ]

26 голосов
/ 13 февраля 2010

Работая с поисковыми системами более 5 лет, я могу сказать, что стандартного способа получения значения запроса не существует.

Как уже сказали другие ответы, первым шагом является проверка заголовка HTTP_REFERER. Предполагая, что вы используете Rails, вы можете получить его из запроса

request.referrer

В противном случае вам нужно извлечь его из заголовков запроса другим способом.

Если у вас есть реферрер, то перед вами 3 основных варианта:

  1. переменная пуста. извини, ты ничего не можешь сделать
  2. переменная не пустая, это поисковая система
  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");

Первый хост соответствует ключу и значению, первый выигрывает.

6 голосов
/ 13 февраля 2010

Проверьте заголовок HTTP-запроса Referer ваших посетителей ($_SERVER['HTTP_REFERER'] в PHP). В 90% случаев это даст вам страницу, с которой пришел ваш посетитель. Если это страница поисковой системы, вам необходимо декодировать строку запроса реферера и проанализировать данные из нее (обратите внимание, что формат строки запроса может измениться).

Это больше, чем Google Analytics, и простой пример, который я привел, не дает вам столько данных; но это можно сделать, если вам не нравится, когда Google выполняет сбор данных для вас.

3 голосов
/ 13 февраля 2010

В ruby ​​вы можете получить реферера, выполнив

request.referrer

Параметры запроса доступны в ваших представлениях и контроллерах. Если вы хотите увидеть другие опции, доступные на request, просто добавьте

<%= request.inspect %>

в одном из ваших просмотров и перейдите на страницу, чтобы увидеть их.

2 голосов
/ 26 февраля 2010

Я думаю, это будет очень полезно для вас, чтобы проверить. Подробно объясняется, как сделать именно то, что вы пытаетесь сделать:

http://www.alistapart.com/articles/searchhighlight/

1 голос
/ 13 февраля 2010

Попробуйте Google Analytics . Это даст вам поисковые системы, поисковые термины и ссылающиеся сайты во многих деталях.

...