如何从Google搜索列表中获取链接的* real * url?

时间:2012-05-02 15:04:44

标签: android browser google-search

我正在Android环境中开发一个网络浏览器,当我在谷歌搜索,然后我得到谷歌搜索结果列表。这些结果的网址是这样的:

http://www.google.ca/url?sa=t&source=web&cd=1&ved=0CDUQFjAA&url=http%3A%2F%2Fwww.test.com%2F&ei=yTOhT7yIGcmu6AG29aSfCQ&usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HAp

此google网址将我发送到真实网页:http://www.test.com

Google使用这种类型的网址来跟踪用户点击的链接。但是,对我来说,我需要真正的网址,所以有没有办法从谷歌重定向网址(http://www.google.ca/url?sa=)获取真正的网址(http://www.test.com) t& source = web& cd = 1& ved = 0CDUQFjAA& url = http%3A%2F%2Fww ...)

我不希望从长字符串中对子网进行子字符串并进行一些替换以获取真正的页面网址,因为这不是一种可靠的方法,因为我将依赖于谷歌网址结构,也许他们会改变他们的将来的参数名称,所以我的方法在这种情况下不起作用......

所以,我想知道是否有办法知道什么网址有重定向链接发送给我

提前感谢。

2 个答案:

答案 0 :(得分:2)

如果您仔细查看,Google会返回http://www.google.ca/url?xxx=...&yyy=...&url=real_url&zzz=之类的内容...也就是说,真实网址位于Google返回的网址的url GET参数中。您需要做的就是解析谷歌返回的网址 - 真正的网址将在响应的url GET参数中。不要忘记对其进行url_decode

另一种方法是获取google返回的完整网址并对其执行HTTP GET。您应该收到301或302重定向。从该响应中,读取location标题的值 - 这将是您的真实网址。

答案 1 :(得分:0)

请记住,Google可以更改其提供的链接,只需使用搜索结果中网站的“真实”网址即可。

在可预见的未来,一个强有力的方法是:

  1. 检查链接的是否包含google,如果没有,则可能是“真正的”网址
  2. 如果域名包含 google。 *,请尝试从GET参数获取网址并取消该值,然后检查它是否为有效网址。
  3. 如果全部失败,则一定要调用该链接并检查location标题。
  4. 如果您能够在出现任何故障时进行记录,则可以检查出现了什么问题以及原因。