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

问题描述 投票:2回答:3

[只要您单击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获取实际的URL(http://en.wikipedia.org/wiki/HI

javascript url google-search
3个回答
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

重要的是,首先提取编码的URL,然后对其进行解码,因为URL本身可能包含查询参数。想象一下,如果它们也与google使用的冲突,会发生什么。

谢谢@James Donnelly。我忽略了unescape已过时。


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


0
投票

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

const params = new URLSearchParams(url)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.