如何在javascript中获取谷歌搜索结果的“真实网址”

时间:2014-12-18 12:36:36

标签: javascript url google-search

每当您点击Google链接时,它会将您重定向到他们的网站,如下所示:

  

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCkQFjAB&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHI&ei=y8mSVJb3HYqlNqvBgIgM&usg=AFQjCNEWA_V3hjoVAu_W7mu3fbN6Q4n0Lw&sig2=dDRuO4YH9VIDXgQoZJH4tQ&bvm=bv.82001339,d.eXY

有没有办法使用JavaScript获取实际网址(http://en.wikipedia.org/wiki/HI)?

3 个答案:

答案 0 :(得分:3)

试试这个:

var googleUrl = "...";
var start = googleUrl.indexOf("&url=") + 5;
var end = googleUrl.indexOf("&", start)
var encodedUrl = googleUrl.substring(start, end);
//var encodedUrl = googleUrl.substr(start, end - start); //OK too
var url = decodeURIComponent(encodedUrl); //this what you want

首先提取已编码的网址然后对其进行解码非常重要,因为网址本身可能包含查询参数。想象一下如果它们与谷歌使用的那些冲突会发生什么。

谢谢,@詹姆斯唐纳利。我遗漏了unescape已被弃用。

答案 1 :(得分:0)

您可以尝试如下:

var a = "https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCkQFjAB&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FHI&ei=y8mSVJb3HYqlNqvBgIgM&usg=AFQjCNEWA_V3hjoVAu_W7mu3fbN6Q4n0Lw&sig2=dDRuO4YH9VIDXgQoZJH4tQ&bvm=bv.82001339,d.eXY";

var b = decodeURIComponent(a);
var p1 = b.indexOf("&url");
var p2 = b.indexOf("&ei");
var res = b.substring(p1+5, p2);

alert(res);

DEMO FIDDLE

答案 2 :(得分:0)

直接执行此操作的方法是使用URLSearchParams

const params = new URLSearchParams(url)

params.get('url') // "http://en.wikipedia.org/wiki/HI"

2016以来,几乎所有浏览器(和Node.js)都支持此功能,但IE例外,您需要一个polyfill