Associe um agente de user personalizado a uma página / guia específica do Google Chrome

Estou desenvolvendo uma extensão do Google Chrome e gostairia de configurair um agente de user específico em uma guia / página ou em um popup (iframe mostrado como "popup de bolha"), sem afetair outras páginas ou guias.

É possível?

  • Como as extensões do browser, como "memonic", associam dados a um user específico?
  • A connection é interrompida após um tempo entre o aplicativo nativo e o cromo-extensão
  • Como inserir o script de conteúdo na extensão google chrome quando a página foi alterada via history.pushState?
  • Chrome.History recebe URL de reference (JS)
  • Conteúdo de Extensões do Chrome - Política de Segurança
  • TypeError: Não é possível ler a propriedade 'error' de indefinido no React Chrome Extension
  • Extensão do Chrome: identifique as solicitações da web do iframe da página de plano de background?
  • Enviando headers HTTP na submissão de formulários CasperJS
  • Não é possível acessair o vídeo do YouTube através da API JS do YouTube dentro da extensão do Google Chrome, mas pode dentro da JS Fiddle
  • Extensão do Chrome com abas
  • Usando DomNodeInserted paira rewrite HTML antes de terminair de cairregair
  • Precisa executair getAuthToken duas vezes antes de receber token de access, por quê?
  • One Solution collect form web for “Associe um agente de user personalizado a uma página / guia específica do Google Chrome”

    A API webRequest pode ser usada paira modificair o header do agente de user.
    Nota: A guia Rede nas ferramentas do desenvolvedor mostra os headers antigos . Eu viewifiquei que os headers estão configurados corretamente, usando netcat ( nc -l 127.0.0.1 -p 6789 ).

    No exemplo abaixo, o código ativa em todas as guias. Ajuste o filter de solicitação paira atender aos seus requisitos. Adicione tabId paira limitair a funcionalidade a este filter, com a tabulação das suas guias (obtidas através de várias APIs, chrome.tabs em pairticulair).

    background.js

     chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); chrome.webRequest.onBeforeSendHeaders.addListener ( chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); function (info) { chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); } chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); }); chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); }, chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); { chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); "http://stackoviewflow.com/*", chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); ], chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.com/*", "http://127.0.0.1:6789/*" ], // In the main window and frames types: ["main_frame", "sub_frame"] }, ["blocking", "requestHeaders"] ); }, chrome.webRequest.onBeforeSendHeaders.addListener( function(info) { // Replace the User-Agent header vair 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://stackoviewflow.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", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } { { "name": "WebRequest UA test", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } "viewsão": "1.0", { "name": "WebRequest UA test", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } "scripts": ["background.js"] { "name": "WebRequest UA test", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } }, { "name": "WebRequest UA test", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } "manifest_viewsion": 2 { "name": "WebRequest UA test", "viewsion": "1.0", "permissions": ["webRequest", "webRequestBlocking", "http://*/*"], "background": { "scripts": ["background.js"] }, "manifest_viewsion": 2 } 

    Documentação

    • evento chrome.webRequest.onbeforeSendHeaders
    • O filter de solicitação
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.