2

我想根据访问者是否来自搜索引擎,以不同的方式显示我的页面。我想我正在检测搜索引擎推荐?我还想知道用于到达我的网站的搜索词。

到目前为止,我的解决方案是:

1) 过滤包含常见搜索引擎 URL 的 HTTP 请求引用,即http://www.google.com/searchhttp://www.bing.com/searchhttp://search.yahoo.com /搜索

2) 为搜索词解析referer的查询字符串参数,例如“q=search+terms+for+my+website+go+here”

我觉得这不是最强大的解决方案,因为它错过了鲜为人知的搜索引擎,并且每个搜索引擎可能都有自己的搜索词查询字符串参数。例如,据我所知,Google 和 Bing 的搜索词参数都是“q”,但 Yahoo 是“p”。那么像 +、- 等特殊运算符呢?

有没有更通用的方法来做到这一点?或者是否有一个图书馆可以帮助我处理更多的搜索引擎?我正在使用在 Tomcat 上运行的 Java,但欢迎来自任何语言和服务器设置的想法。

4

3 回答 3

2

看看这里: http ://www.gdargaud.net/Hack/Searches.html

在这里: http ://search.cpan.org/perldoc?URI::ParseSearchString

2 种略有不同的方法,但它们涵盖了更广泛的搜索引擎及其引用字符串。

于 2009-08-15T00:14:42.470 回答
1

你的方法是你能做的最好的。我在 Drupal 上运行了一个类似的模块,

http://drupal.org/project/search_engine_referers

如果您查看代码,它会完全按照您所说的进行。我认为他们还没有支持 Bing.com 的版本。

考虑到搜索市场份额的走向,如果你能处理谷歌(AOL 使用谷歌)、必应和雅虎,你将获得超过 90% 的搜索。你真的需要担心其他搜索网站吗?如果你和我一样在中国,把 baidu.com 添加到列表中。

有一些你无法处理的奇怪的小型搜索网站。他们会时不时地改变他们的参数。有些人甚至使用 POST 来发送查询,因此它在推荐人中不可用。

于 2009-08-14T23:45:20.553 回答
1

对于 PHP,您请求 $_REQUEST["HTTP_REFERRER"] 并使用一些 pregs 或 eregs 解析搜索字符串。

于 2009-08-15T17:27:50.280 回答