如何获得;“真实网址”;谷歌搜索结果的javascript格式

如何获得;“真实网址”;谷歌搜索结果的javascript格式,javascript,url,google-search,Javascript,Url,Google Search,当你点击谷歌链接时,它会通过他们的网站重定向你,如下所示: 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=dDRuO4YH9VIDX

当你点击谷歌链接时,它会通过他们的网站重定向你,如下所示:

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

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

试试以下方法:

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
首先提取编码的url然后对其进行解码很重要,因为url本身可能包含查询参数。想象一下,如果它们与谷歌所使用的工具发生冲突,会发生什么


谢谢,詹姆斯·唐纳利。我建议不要使用
unescape

您可以像下面这样尝试:

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);

实现这一点的直接方法是:

const params=新的url搜索参数(url)
参数get('url')/“http://en.wikipedia.org/wiki/HI"

自年以来,几乎所有浏览器(和Node.js)都支持这一点,但IE除外,您需要一个。

但是您假设“ei”在“url”之后,可以按其他顺序。@sergiomse:谢谢您指出这个问题。你有任何链接支持这一点吗。这将非常有用。@sergiomse: