1

我將阻止任何不包含特定模式的請求URL。在chrome中不包含特定模式的阻止請求URL

在google chrome網絡選項卡中有一個請求阻止選項卡(在請求行上單擊右鍵,然後選擇阻止請求URL)。

enter image description here

例如,我有7的XMLHttpRequest(XHR)網址請求聯鎖翼片(使用Ajax發送):

  1. http://www.test.com?userid=5
  2. http://www.test.com?username=username
  3. http://www.test.com?email=email
  4. http://www.test.com?name=x
  5. http://www.test.com?family=q
  6. http://www.test.com?family=y
  7. http://www.test.com?family=z

點擊,通過添加一個圖案(例如,圖案*family*塊3請求下文)具有特定的圖案加號和塊請求:

  1. http://www.test.com?family=q
  2. http://www.test.com?family=y
  3. http://www.test.com?family=z

小心!因爲這些模式是區分大小寫的

pattern for block requests

如何阻止不包含家庭字請求?(下同)

  1. http://www.test.com?userid=5
  2. http://www.test.com?username=username
  3. http://www.test.com?email=email
  4. http://www.test.com?name=x

我可以使用正則表達式嗎?

回答

1

用於阻止客戶端瀏覽器上的請求,使用HTTP請求阻止程序和Google Chrome請求攔截器擴展。

爲了處理從CLIEN端請求,使用以下代碼: 之前創建在客戶端攔截像下面和控制所有請求和發送(與AngularJS)後:

myApp.config(['$httpProvider', '$locationProvider', 
      function ($httpProvider, $locationProvider) { 
      $httpProvider.interceptors.push(function ($q) { 
       return { 
        //This method is called right before $http send a 
        //request 
        'request': function (config) { 

        }, 
        //This method is called right after $http receives the 
        //response 
        'response': function (config) { 

        }, 
        //request can’t be sent 
        'requestError': function (config) { 

        }, 
        //Sometimes our backend call fails 
        'responseError': function (config) { 

        }, 
       } 
      }); 
     }]); 

Request blocker

Interceptors

1

如果你看一下DevTools源代碼

https://github.com/ChromeDevTools/devtools-frontend/blob/aaad45c61dfb22ad885b507a0f38f19863c09553/front_end/network/BlockedURLsPane.js#L194

for (var blockedUrl of this._blockedCountForUrl.keys()) { 
     if (this._matches(url, blockedUrl)) 
     result += this._blockedCountForUrl.get(blockedUrl); 
    } 
    return result; 
    } 

    /** 
    * @param {string} pattern 
    * @param {string} url 
    * @return {boolean} 
    */ 
    _matches(pattern, url) { 
    var pos = 0; 
    var parts = pattern.split('*'); 
    for (var index = 0; index < parts.length; index++) { 
     var part = parts[index]; 
     if (!part.length) 
     continue; 
     pos = url.indexOf(part, pos); 
     if (pos === -1) 
     return false; 
     pos += part.length; 
    } 
    return true; 
    } 

它不使用正則表達式。那麼簡單的答案是否定的,它不支持使用RegEx。但是,您可以輕鬆添加這樣的功能,並提交拉取請求以允許正則表達式模式。

+0

我將阻止來自瀏覽器(或任何擴展名)的請求,而不是來自代碼。我可以在代碼端創建一個攔截器(在AngularJS中),並在發送任何請求之前檢查所有不包含「家族」模式。 –

+0

在您的代碼中,如何阻止不包含'家庭'模式? 請考慮我的代碼中的網址。 –

+0

這不是我的代碼,我剛剛展示了截至目前DevTools中的代碼。告訴你當前的代碼是做什麼的 –