2012-05-02 47 views
0

我正在开发一个在Android环境下的网络浏览器,当我在谷歌搜索,然后我得到谷歌搜索结果列表。这些结果的网址是类似的东西:如何从Google搜索列表中获取链接的*真实*网址?

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

这个谷歌的网址给我真实页:http://www.test.com

谷歌使用该类型的网址来跟踪其链接的人点击。但是,对我来说,我需要真正的url,那么有没有办法从google重定向网址(http://www.google.ca/url?sa=)获取真实网址(http://www.test.com)牛逼&源=网络& CD = 1 & VED = 0CDUQFjAA & URL = HTTP%3A%2F%2Fww ...)

我不想串从长字符串的URL,并提出一些替代品来获得真正的页面的URL,因为它不是做一个可靠的方法,因为我将取决于谷歌URL结构,也许他们会改变它们的参数名称在未来,所以我的方法不会在这种情况下工作...

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

在此先感谢。

回答

2

如果你仔细看看,Google会返回类似http://www.google.ca/url?xxx=...&yyy=...&url=real_url&zzz= ...也就是说,真正的URL位于Google返回的url的url GET参数中。您只需解析google返回的网址 - 真实网址将位于响应的url GET参数中。别忘了在上面做url_decode

做的另一种方法是把完整的URL,谷歌的回报,做HTTP GET就可以了。您应该收到301或302重定向。从该响应中,读取location标头的值 - 这将是您的真实URL。

+0

是找你的权利,但是,正如我在我的文章中说,我不想使用此解决方案,因为我不得不依赖谷歌,我的意思是,如果谷歌例如决定改变参数名: ..&URL = real_url&...这个名字:..&GURL = real_url&...我的方法不会在这种情况下工作,因为什么我应该做的是从这个词“与URL” –

+0

提取的子串@AlaouiGhita它不是一个真正的子字符串提取,但我仍然听到你。然而,你真的可以做的不多。如果这是谷歌回报...首先,你如何将查询发送到谷歌? –

+0

为您的问题,我不发送查询谷歌,我有一个网页浏览器,我进入我的地址栏google.com,当我得到的网站,我搜索“东西”,我得到谷歌页面的结果,当我点击其中一个结果链接,我去结果页面,但这个网页的网址是“长谷歌网址”,以便我的浏览器显示在地址栏中,但我希望它只显示我地址栏中的真实网址 –

0

请记住,谷歌可能会改变其提供的链接,简单地使用在搜索结果中的网站的“真实”的网址。

覆盖可预见的未来稳健的方法是:

  1. 检查,如果该链接的包含谷歌或没有,如果没有,它如果域可能是“真实”的URL
  2. 包含谷歌。 *,尝试从GET参数获取URL并取消其值,然后检查它是否是有效的URL。
  3. 如果所有的失败,然后通过各种手段调用链接并检查location头。

如果你能够记录什么时候失败,你可以检查出了什么问题,为什么。

相关问题