是否可以从Google搜索中捕获搜索字词?

joh*_*b10 17 html php http-referer search

这可能是一个愚蠢的问题,但是有可能捕获用户键入Google搜索框的内容,以便可以在我的网站上的目标网页上生成动态页面吗?

例如,假设有人在Google上搜索"热狗",我的网站就会成为搜索结果链接之一.如果用户点击指向他们链接到我网站的链接,我是否可以以某种方式从Google搜索框中了解或捕获"热狗"文本,以便我可以调用在本地数据库中搜索内容的脚本有关热狗,然后显示?对我来说似乎完全不可能,但我真的不知道.谢谢.

Pet*_*ley 24

我会这样做的

$referringPage = parse_url( $_SERVER['HTTP_REFERER'] );
if ( stristr( $referringPage['host'], 'google.' ) )
{
  parse_str( $referringPage['query'], $queryVars );
  echo $queryVars['q']; // This is the search term used
}
Run Code Online (Sandbox Code Playgroud)

  • +1 使代码与国际谷歌域名(google.fi、google.de 等)和谷歌图像搜索兼容。 (2认同)

Gab*_*ner 14

这是一个老问题,答案已经改变,因为最初的问题被提出并回答了.截至2011年10月,Google正在为登录Google帐户的所有人加密此推荐信息:http://googleblog.blogspot.com/2011/10/making-search-more-secure.html

对于未登录Google的用户,仍会在推荐网址中找到搜索关键字,上述答案仍然适用.但是,对于经过身份验证的Google用户,网站无法查看其搜索关键字.

但是,通过创建专用登录页面,仍然可以进行智能猜测.(参观"赫特贾巴的尊严木炭素描"页面的访客可能......好吧,疯了.)


Juh*_*älä 12

对的,这是可能的.请参阅HTTP标头Referer.Referer标题将包含Google搜索结果页面的URL.

当用户点击Google搜索结果页上的链接时,浏览器会使用此类HTTP标头向您的网站发出请求:

Referer: http://www.google.fi/search?hl=en&q=http+header+referer&btnG=Google-search&meta=&aq=f&oq=
Run Code Online (Sandbox Code Playgroud)

只需解析请求标头中的URL,用户使用的搜索字词将在q -parameter中.上面示例中使用的搜索词是" http header referer ".

同样的方法通常也适用于其他搜索引擎,它们在Referer头中只有不同类型的URL.

这个答案显示了如何在PHP中实现它.


Referer标头仅适用于HTTP 1.1,但它几乎涵盖了任何现代浏览器.浏览器也可能伪造Referer标题或标题可能完全丢失,因此不要根据Referer标题做出太严重的请求.

  • 由于2011年底Google安全性更改,当搜索由已登录的Google用户执行时,此功能不再可用:http://googleblog.blogspot.com/2011/10/making-search-more-secure.html和http://analytics.blogspot.com/2011/10/making-search-more-secure-accessing.html (6认同)
  • 除此之外,为了让您的页面在搜索结果中出现,它已经需要具有相关内容 (3认同)

Muh*_*eer 7

这是一个老问题,但我发现谷歌不再提供查询字词,因为它默认情况下将每个用户重定向到https,这不会给你"q"参数.除非有人手动输入带有http(http://google.com)的google网址并进行搜索,否则目前无法获得"q"参数.