我正在开发一个需要访问 google 结果的搜索引擎。这是我的选择:
- 使用自定义搜索 API
- 使用代理让我的服务器发送搜索并返回数据
虽然有些事情我不确定:
自定义搜索 API 是否受限?我可能需要非常大量的查询,所以如果使用受到限制,那将是一个问题。
是否“授权”在 Node 中使用代理将搜索查询发送到谷歌并拦截结果以显示给我的用户?如果我这样做,我会不会遇到一些限制?
这里的灵感是gizoogle它设法插入 google API(它们与 google 的结果相同),但仍未使用自定义搜索(自定义搜索显示添加,但该网站上没有)。所以我假设他们有某种代理,但谷歌为什么让他们运行这些查询?
编辑:事实证明自定义搜索 API 也有限制。那么,gizoogle是怎么做到的呢?
最佳答案
好的,这是我解决这个问题的方法:
事实证明,谷歌丢失了一个用于客户端 ajax 搜索的 API(可能已被弃用,因此请注意这一点)。看起来像这样:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=test&rsz=large
只需转到 that url看看它给出了什么结果。
基本上流程是这样的:
- 用户输入搜索
- 它以 ajax 的形式发送到您的服务器
- 服务器可能会根据您的应用修改搜索(过滤禁用词或其他)
- 您的服务器从 google 轮询 ajax web 服务 - 不要忘记添加
get
参数userIp
以避免限制(google 限制每个传入查询用户,所以你的服务器必须告诉谷歌它正在代表这个userIp
发出请求
- 你把结果发回给客户端,然后用javascript显示出来
唯一的缺点是搜索必须在 ajax 中进行,这意味着页面在加载时是空的,稍后会填充。但是您实际上可以使用 URL 中的获取参数来预加载搜索并填充页面,然后再将其发送给客户端。
关于javascript - Google 在整个网络上的自定义搜索和限制 (gizoogle),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20688117/