簡體   English   中英

Chrome webRequest僅收聽用戶輸入的網址

[英]Chrome webRequest listening to only user entered URLs

我正在制作Chrome擴展程序,僅允許用戶訪問指定白名單中的網站。 chrome.webRequest.onBeforeRequest非常適合攔截和檢查URL,但我遇到的問題是它會檢查所有傳入的URL,包括網頁何時嘗試加載資源。 我希望它只檢查用戶輸入的URL,如果該URL在白名單上,我希望它允許該網頁加載它需要的任何資源,無論它們是否在白名單中。

這是我的監聽器代碼。

    chrome.webRequest.onBeforeRequest.addListener(
      function(info) {
        console.log("URL: " + info.url);
        var pageURL = info['url'];
        let mngwlst = new ManageWhitelist();
        var whitelist = mngwlst.getWhitelist();
        if(whitelist == null) mngwlst.setWhitelist([]);
        var denyRequest = false;
        var denyRequest = monitor.ExamineWhitelist(pageURL, whitelist);
        console.log(denyRequest);
        return {cancel: denyRequest}
    },

    {
        urls: [
        "<all_urls>"
        ],
    },

    ["blocking"]);

monitor.ExamineWhitelist(pageURL, whitelist)將返回true或false,具體取決於URL是否在白名單中。

嘗試僅過濾“用戶輸入的”網址很棘手,但可能對您有所幫助的是webRequest資源類型: https//developer.chrome.com/extensions/webRequest#type-ResourceType

資源類型允許您僅篩選某些類型的請求。 例如,'Main_frame'是在頂層框架加載的文檔。 這樣,每次請求圖像或樣式表時,onBeforeRequest偵聽器都不會觸發。

您可以按照按網址過濾的相同方式按類型進行過濾:

chrome.webRequest.onBeforeRequest.addListener(
      function(info) {
        console.log("URL: " + info.url);
        var pageURL = info['url'];
        let mngwlst = new ManageWhitelist();
        var whitelist = mngwlst.getWhitelist();
        if(whitelist == null) mngwlst.setWhitelist([]);
        var denyRequest = false;
        var denyRequest = monitor.ExamineWhitelist(pageURL, whitelist);
        console.log(denyRequest);
        return {cancel: denyRequest}
    },

{ 
    urls: ["<all_urls>"],
    types: ["main_frame"],
},
["blocking"]);

info有一個名為type的屬性,它返回webRequest的resourceType。

此處列出了資源類型: https//developer.chrome.com/extensions/webRequest#type-ResourceType ,其中“main_frame”是您要查找的類型。

chrome.webRequest.onBeforeRequest.addListener(
  function(info) {
    if(info.type == "main_frame"){
        doMyStuff();
        return {cancel: denyRequest};
    }
},
{
    urls: [
    "<all_urls>"
    ],
},
["blocking"]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM