A API de extensões do Firefox pode tomar uma decisão de proxy para um pedido individual. Quando o pedido tem uma atribuição de aba válida, uma extensão pode comparar o seu ID de aba com a aba que o utilizador selecionou.

Para o script de fundo de uma extensão Firefox existente, o fragmento de encaminhamento pode ser:

browser.proxy.onRequest.addListener(details => {
  if (details.tabId === selectedTabId) {
    return {type: 'http', host: 'proxy.example', port: 8080};
  }
  return {type: 'direct'};
}, {urls: ['<all_urls>']});

A extensão fornece selectedTabId a partir da sua própria lógica de seleção do utilizador. O anfitrião HTTP e a porta inteira podem vir da lista de proxies HTTP para um teste permitido numa aba pública. Precisa da permissão de proxy e das permissões de anfitrião que cobrem os URL filtrados.

Isto difere de um script PAC, cuja decisão padrão por URL e anfitrião não identifica uma aba do navegador. Também difere de alterar o proxy manual global do Firefox enquanto outra aba está a carregar.

Tenha em conta a configuração subjacente do navegador: o valor direct do ProxyInfo não substitui um proxy configurado pelo utilizador. Verifique a política base e o comportamento de recurso em vez de prometer que todos os pedidos sem correspondência passam diretamente.

Parte do tráfego não tem informações fiáveis de aba, e a Mozilla documenta uma atribuição imprecisa para ligações de proxy HTTP/3. Isto ilustra o encaminhamento de pedidos, não uma garantia de que cada ligação associada a uma tarefa de navegação está isolada por aba. O encaminhamento por contentores específico da extensão é outro modelo a avaliar.

Artigos relacionados