是否有办法获得谷歌搜索重定向url重定向后

Is there a way to get the google search redirect url after redirecting?

本文关键字:重定向 搜索 url 谷歌 是否      更新时间:2023-09-26

例如,你在google.com上搜索一些东西,你点击一个结果链接,然后你将被重定向到一个'https://www.google.....',然后到正确的网站。我怎么能得到url ('https://www.google.....')后,我来到正确的网站。

document.referrer

不能帮助。它只给出'https://www.google.com/',而我想获得完整的url。

这样做的最好方法可能是使用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"作为您在manifest文件中的权限。

所做的是取出url,然后将其添加到近似结果调用的请求头中。我本来打算展示如何在重定向期间requestId保持不变,但它不是传统的重定向。据我所知,没有办法将第一个请求与下一个请求关联起来,除了它将有一个非常接近的id,因此是<= 2。不管您想用它做什么,第一个侦听器都会为您提供您想要的url,只是可能很难将它与结果页面关联起来。

请注意,虽然这确实改变了引用头,但它不会显示在开发工具或document.referrer中。