例如,您在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
。