Como Bloquear o Inspecionar em Sua Página Web

Aprenda a implementar técnicas para dificultar o uso do inspecionar em sua página

Este artigo foi criado usando o ChatGPT

Introdução

Proteger o código-fonte de uma página web pode ser uma tarefa desafiadora, especialmente quando usuários podem facilmente inspecionar e modificar o conteúdo usando ferramentas de desenvolvedor (devtools) do navegador. Neste guia, vamos explorar uma abordagem para bloquear ou dificultar o acesso ao inspecionar elemento.

Etapa 1: Entendendo as Ferramentas de Desenvolvedor

As ferramentas de desenvolvedor (devtools) são um conjunto de recursos que permitem aos usuários inspecionar o HTML, CSS e JavaScript de uma página web. Apesar de serem essenciais para o desenvolvimento web, essas ferramentas podem ser usadas de forma indevida para manipular ou copiar conteúdos sensíveis.

Etapa 2: Implementando um Script de Detecção de DevTools

Uma forma de dificultar o uso do inspecionar é monitorar o estado das devtools e tomar uma ação, como redirecionar o usuário, quando elas são abertas. Veja o exemplo abaixo:

<script>
  const devtools = {
    isOpen: false,
    orientation: undefined
  }
  const threshold = 160

  const emitEvent = (isOpen, orientation) => {
    globalThis.dispatchEvent(
      new globalThis.CustomEvent('devtoolschange', {
        detail: { isOpen: isOpen, orientation: orientation }
      })
    )
  }

  const main = ({ emitEvents = true } = {}) => {
    const platform = navigator.platform

    if (
      /iPad|iPhone|iPod/.test(platform) ||
      platform.toUpperCase().indexOf('MAC') >= 0
    ) {
      return
    }

    const widthExceedsThreshold =
      globalThis.outerWidth - globalThis.innerWidth > threshold
    const heightExceedsThreshold =
      globalThis.outerHeight - globalThis.innerHeight > threshold
    const orientation = widthExceedsThreshold ? 'vertical' : 'horizontal'

    if (
      (widthExceedsThreshold || heightExceedsThreshold) &&
      ((globalThis.Firebug &&
        globalThis.Firebug.chrome &&
        globalThis.Firebug.chrome.isInitialized) ||
        widthExceedsThreshold ||
        heightExceedsThreshold)
    ) {
      if (
        (!devtools.isOpen || devtools.orientation !== orientation) &&
        emitEvents
      ) {
        emitEvent(true, orientation)
      }
      devtools.isOpen = true
      devtools.orientation = orientation
    } else {
      if (devtools.isOpen && emitEvents) {
        emitEvent(false, undefined)
      }
      devtools.isOpen = false
      devtools.orientation = undefined
    }
  }

  main({ emitEvents: false })
  setInterval(() => {
    main()
    debugger
  }, 500)

  const checkDevtools = (isOpen = devtools.isOpen) => {
    if (isOpen) {
      location.href = 'https://google.com.br'
    }
  }

  window.addEventListener('devtoolschange', (event) =>
    checkDevtools(event.detail.isOpen)
  )
  document.addEventListener('DOMContentLoaded', () => checkDevtools())
</script>

Etapa 3: Explicando o Script

Este script monitora se as devtools do navegador estão abertas, e caso estejam, o usuário é redirecionado para uma outra página (neste exemplo, o Google). Ele faz isso verificando as dimensões da janela do navegador, já que a abertura das devtools normalmente altera essas dimensões.

Componentes do Script

  • Função principal (main): Verifica se as devtools estão abertas e em qual orientação (horizontal ou vertical).
  • Evento devtoolschange: Emitido quando há uma mudança no estado das devtools.
  • Redirecionamento: Se as devtools estiverem abertas, o script redireciona o usuário.

Limitações

É importante destacar que bloquear completamente o inspecionar não é possível. Usuários avançados podem contornar essas proteções. O objetivo desse script é dificultar o acesso e dissuadir usuários menos experientes.

Conclusão

Embora não seja possível impedir completamente o uso das devtools, este script pode ser uma medida adicional de proteção. No entanto, é essencial considerar que a melhor proteção contra a cópia e manipulação indevida de conteúdo é a conscientização e o uso de boas práticas de segurança na web.

.