例如,您在google.com.tw中搜索某项内容。您点击一个结果链接,然后您将重定向到'https://www.google .....',然后转到正确的网站。如何获取url(' https://www.google .....')我来到正确的网站后。有没有办法让重定向后的谷歌搜索重定向网址?
document.referrer
不能帮助。它只给'https://www.google.com/',而我想获得完整的网址。
例如,您在google.com.tw中搜索某项内容。您点击一个结果链接,然后您将重定向到'https://www.google .....',然后转到正确的网站。如何获取url(' https://www.google .....')我来到正确的网站后。有没有办法让重定向后的谷歌搜索重定向网址?
document.referrer
不能帮助。它只给'https://www.google.com/',而我想获得完整的网址。
要做到这一点,最好的方法可能是使用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"
为您的权限在您的清单文件。
这样做会取出url,然后将它添加到近似结果调用的请求标头中。我原本打算说明在重定向过程中requestId
保持不变,但它不是传统的重定向。据我所见,无法将第一个请求与下一个请求相关联,因为它将具有非常接近的ID,因此是<= 2
。无论您想如何处理它,第一个侦听器都会为您提供所需的url,但可能很难将其与生成的页面关联。
请注意,尽管这确实会更改引用标头,但它不会显示在开发工具中或作为document.referrer
。