2009-08-14 73 views
2

我想根据访问者是否来自搜索引擎来以不同的方式显示我的网页。我想我正在检测搜索引擎推介?我还想知道用于访问我的网站的搜索字词。是我的网站来自搜索引擎的访问者吗?他们的搜索条件是什么?

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

1)在其上包含公共搜索引擎的URL的HTTP请求查阅情况,筛选即http://www.google.com/searchhttp://www.bing.com/search,或http://search.yahoo.com/search

2)解析的查询字符串参数搜索条件的引用者,例如“q = search + terms + for + my + website + go + here”

我觉得这不是最强大的解决方案,因为它没有使用较少的已知搜索引擎,每个搜索引擎可能都有自己的查询字符串参数为搜索条款。例如,据我所知,Google和Bing的搜索字词参数都是“q”,但雅虎的是“p”。那么像+, - 等特殊运营商呢?

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

回答

1

你的方法是关于你能做的最好的。我跑的Drupal类似的模块,

http://drupal.org/project/search_engine_referers

如果你看一下代码,它确实你说什么。我认为他们还没有支持Bing.com的版本。

考虑到搜索市场份额在哪里,如果您可以处理Google(AOL使用Google),Bing和Yahoo,那么您可以获得90%以上的搜索结果。你真的需要担心其他搜索网站吗?如果你像我一样在中国,请将baidu.com添加到列表中。

有一些奇怪的小型搜索网站,你无法处理。他们偶尔会改变参数。有些人甚至使用POST发送查询,所以它在referrer中不可用。

1

在PHP的情况下,您请求$ _REQUEST [“HTTP_REFERRER”]并使用一些pregs或ereg解析搜索字符串。