Associare un agente utente personalizzato a una pagina / scheda di Google Chrome specifica

Sto sviluppando un’estensione di Google Chrome e vorrei impostare un agente utente specifico su una scheda / pagina o su un popup (iframe visualizzato come un “bubble popup”), senza intaccare altre pagine o tabs.

È ansible?

L’ API webRequest può essere utilizzata per modificare l’intestazione User Agent.
Nota: la scheda Rete negli strumenti di sviluppo mostra le vecchie intestazioni. Ho verificato che le intestazioni siano impostate correttamente, usando netcat ( nc -l 127.0.0.1 -p 6789 ).

Nell’esempio seguente, il codice si triggers su tutte le tabs. Regola il filtro di richiesta in base alle tue esigenze. Aggiungi tabId per limitare la funzionalità a questo filtro, con il tabId delle tue tabs (ottenibile tramite varie API, chrome.tabs in particolare).

background.js

 chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header var headers = info.requestHeaders; headers.forEach(function(header, i) { if (header.name.toLowerCase() == 'user-agent') { header.value = 'Spoofed UA'; } }); return {requestHeaders: headers}; }, // Request filter { // Modify the headers for these pages urls: [ "http://stackoverflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); 

manifest.json

 { "name": "WebRequest UA test", "version": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_version": 2 } 

Documentazione

  • evento chrome.webRequest.onbeforeSendHeaders
  • Il filtro richiesta