2015-06-02 13 views
7

Come può un'estensione intercettare qualsiasi URL richiesto per bloccarlo se una condizione corrisponde?Estensione Chrome: come intercettare gli URL richiesti?

Similar question for Firefox.

Che il permesso deve essere impostato in manifest.json?

+0

Si prega di includere abbastanza informazioni in questa domanda in modo che possa essere risolta se, per esempio, il collegamento si spegne. Va bene e incoraggiato a collegarsi a domande correlate, ma questa domanda dovrebbe essere indipendente. – Xan

+2

@intika Accettato/migliorato la modifica, nominata per la riapertura. – Xan

risposta

15

codice JavaScript:

L'esempio seguente illustra come bloccare tutte le richieste di www.evil.com:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
    return {cancel: details.url.indexOf("://www.evil.com/") != -1}; 
    }, 
    { urls: ["<all_urls>"] }, 
    ["blocking"] 
); 

L'esempio seguente ottiene lo stesso scopo in modo più efficiente perché le richieste che non sono mirate a www.evil.com non devono essere passate all'estensione:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
    return { cancel: true }; 
    }, 
    {urls: ["*://www.evil.com/*"]}, 
    ["blocking"] 
); 

Registrazione ascoltatori di eventi:

per registrare un listener di eventi per una richiesta Web, si utilizza una variante della solita funzione di addListener(). Oltre a specificare una funzione di callback, devi specificare un argomento di filtro e puoi specificare un argomento di informazioni extra opzionale.

I tre argomenti addListener web richiesta di API() hanno le seguenti definizioni:

var callback = function(details) {...}; 
var filter = {...}; 
var opt_extraInfoSpec = [...]; 

Ecco un esempio di ascolto per l'evento onBeforeRequest:

chrome.webRequest.onBeforeRequest.addListener(
    callback, filter, opt_extraInfoSpec); 

permesso necessario su manifesto. json:

"permissions": [ 
    "webRequest", 
    "webRequestBlocking", 
"tabs", 
"<all_urls>" 
], 

Estensioni esempi e collegamenti di aiuto:

+2

Questa è una risposta molto migliore. Grazie per aver dedicato del tempo per farlo. – Xan

+0

@intika Risposta molto apprezzata. Ho appena migliorato la formattazione. – sachinjain024

Problemi correlati