Extensões Google Chrome

Bloqueador de Abas Indesejadas é uma extensão de navegador

Slide
Slide
Slide

Sobre o Projeto

O Bloqueador de Abas Indesejadas é uma extensão de navegador de alta performance, desenvolvida utilizando o Manifest V3. Sua principal missão é devolver o controle de navegação ao usuário, impedindo que scripts maliciosos, anúncios invasivos ou cliques acidentais abram novas abas (pop-ups/pop-unders) ou redirecionem a página atual sem o consentimento explícito.

A arquitetura foi pensada para oferecer uma segurança robusta e uma experiência limpa, substituindo completamente os alertas nativos e engessados do navegador por uma interface profissional e integrada.

🚀 Funcionalidades Principais
1. Interceptação Profunda de Pop-ups (window.open)
Scripts injetados por sites de terceiros frequentemente tentam abrir janelas em segundo plano usando a função window.open. A extensão neutraliza essa ação diretamente na raiz:

Injeta um script seguro antes que a página seja carregada (run_at: "document_start").

Sobrescreve o comportamento padrão do navegador, bloqueando a abertura silenciosa de abas.

Registra a tentativa e notifica o sistema visualmente.

2. Bloqueio Inteligente de Cliques Físicos e Programáticos
Não importa se o usuário clicou em um link disfarçado ou se um script tentou simular um clique (via .click()):

Links Externos na Mesma Aba: Se um link tentar tirar o usuário do domínio atual, a extensão pausa a navegação.

Remoção do target="_blank": Links projetados para forçar a abertura de uma nova aba têm esse atributo removido, mantendo a navegação contida na aba atual e sob análise.

3. Interface de Confirmação Profissional (UI/UX)
Para garantir uma experiência de usuário premium, a extensão elimina o uso de caixas de diálogo nativas do sistema (alert, confirm).

Modal Customizado: Quando um redirecionamento externo é detectado, a extensão renderiza um modal diretamente no DOM da página.

Foco Visual: O modal utiliza um fundo escurecido com desfoque (Blur), criando um isolamento visual elegante que foca a atenção do usuário na URL de destino.

Ação Assíncrona: A navegação só ocorre se o usuário clicar no botão "Continuar", sem travar a thread principal do navegador.

4. Controle Rápido e Persistência de Estado
O usuário tem total controle sobre a ferramenta através de um Popup de acesso rápido.

Liga/Desliga Instantâneo: Um botão com feedback visual claro (Verde para Ligado, Vermelho para Desligado).

Memória de Estado: Utiliza a API chrome.storage.local para lembrar a preferência do usuário. Se ele desligar o bloqueador, a extensão permanecerá inativa em todas as abas até ser reativada.

5. Notificações Visuais Discretas (Badge)
Sempre que um bloqueio ocorre no modo silencioso (como pop-ups invisíveis), a extensão não interrompe a leitura do usuário.

Exibe um "Badge" (selo) vermelho no ícone da extensão.

Mantém uma contagem independente de bloqueios para cada aba aberta.

A contagem é zerada automaticamente se o usuário recarregar a página ou fechar a aba.

📂 Estrutura e Arquitetura de Arquivos
Para facilitar manutenções futuras e atualizações do sistema, o código segue o princípio de responsabilidade única:

manifest.json: O "coração" da extensão. Define as permissões (storage), a versão da API (V3) e instrui o navegador sobre quais scripts devem rodar e onde.

popup.html & popup.js: A interface do usuário que aparece ao clicar no ícone da extensão. Controla visualmente o estado (Ligado/Desligado) e salva a preferência no armazenamento local.

background.js (Service Worker): Roda de forma independente em segundo plano. É o responsável por escutar as mensagens de bloqueio e atualizar o selo visual (Badge) no ícone da extensão de forma isolada para cada Tab ID.

content.js: O "guarda-costas" da página atual. É injetado em todas as URLs. Ele intercepta cliques físicos, gerencia a renderização do Modal Customizado de confirmação e faz a ponte de comunicação com o Service Worker.

inject.js: Um script "infiltrado" executado no contexto da página web (não no ambiente isolado da extensão). Isso permite que ele sobrescreva métodos nativos do JavaScript (como window.open e HTMLAnchorElement.prototype.click) antes que o código do site original possa agir, reportando as tentativas de volta ao content.js via Eventos Customizados.

🛠️ Casos de Uso Recomendados
Navegação Segura: Bloqueia pop-unders invisíveis em sites de download e streaming.

Ambientes Focados: Impede que os usuários saiam acidentalmente de sistemas fechados ou jogos web.

Proteção de Sessão: Exige que o usuário verifique ativamente a URL de destino antes de ser ejetado do domínio atual.