有没有办法在重定向后获取谷歌搜索重定向网址?

时间:2013-03-14 06:59:16

标签: javascript google-chrome-extension

例如,您在google.com中搜索某些内容。您点击结果链接,然后您将重定向到“https://www.google .....”然后转到正确的网站。我怎么能在我来到正确的网站后获取网址('https://www.google .....')。

document.referrer

无法帮助。我只想提供“https://www.google.com/”,而我想获得完整的网址。

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法可能是在重定向之前使用chrome.webRequest获取旧的引荐来源。

这样做的一种方法是:

var requestIds = [];

chrome.webRequest.onBeforeRequest.addListener(function(details){
  var temp = {requestId:details.requestId,url:details.url}
  requestIds.push(temp);
},
{urls: ["*://www.google.com/url*"]});
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
  requestIds.forEach(function(v,i,a){
    if(parseInt(details.requestId)-parseInt(v.requestId)<=2){
      details.requestHeaders.forEach(function(val,ind,arr){
        if(val.name =="Referer")
          val.value = v.url;
      });
      requestIds.splice(i,1);
    }
  });
},
{urls: ["<all_urls>"],types:["main_frame"]},["requestHeaders","blocking"]);

您还需要"webRequest","webRequestBlocking"来获取清单文件中的权限。

这样做会拔出网址,然后将其添加到近似结果调用的请求标头中。我原本打算在重定向期间显示requestId保持不变,但它不是传统的重定向。据我所知,没有办法将第一个请求与下一个请求相关联,因为它将具有非常接近的id,因此<= 2。无论你想用它做什么,第一个监听器都会为你提供你想要的url,它可能很难将它与结果页面联系起来。

请注意,虽然这会更改引荐来源标头,但它不会显示在开发工具中或显示为document.referrer

相关问题