【问题标题】:How to get "true url" of google search results in javascript如何在javascript中获取谷歌搜索结果的“真实网址”
【发布时间】:2015-02-17 06:01:34
【问题描述】:

当您点击 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


    【解决方案1】:

    直接的方法是使用URLSearchParams

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

    自从2016 以来,几乎所有浏览器(和 Node.js)都支持这一点,除了 IE,你需要一个 polyfill

    【讨论】:

      【解决方案2】:

      试试这个:

      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 使用的冲突,会发生什么。

      谢谢,@詹姆斯唐纳利。我忽略了 unescape 已弃用。

      【讨论】:

        【解决方案3】:

        您可以尝试如下:

        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

        【讨论】:

        猜你喜欢
        • 2015-12-29
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多