Skip to content

Repository files navigation

Web Proxy com Controle de Conteúdo

Um servidor proxy HTTP intermediário implementado em Flask que permite controlar o acesso a sites, filtrar conteúdo e registrar todas as requisições.

Características

  • Modo Transparente: Repassar conteúdo de sites sem modificações
  • Bloqueio de Sites: Bloquear domínios configurados na lista negra (blocked.json)
  • Filtro de Conteúdo: Substituição case-insensitive de palavrões em HTML (words.json)
  • Log de Acessos: Registrar todas as requisições com timestamp, URL e ação em log.json
  • Tratamento de Erros: Páginas HTML personalizadas para bloqueio e erros

Requisitos

  • Python 3.7 ou superior
  • Flask 2.3.3
  • requests 2.31.0

Instalação

  1. Clone o repositório ou descompacte o arquivo:
cd web-proxy-si
  1. Instale as dependências:
pip install -r requirements.txt

Configuração

blocked.json

Define quais domínios serão bloqueados. Exemplo:

{
  "bloqueados": [
    "www.sitex.com",
    "redes-sociais.net",
    "joguinhos.io"
  ]
}

words.json

Define palavras que serão filtradas (substituídas) no conteúdo HTML. Exemplo:

{
  "foda": "diabos",
  "merda": "macacos me mordam",
  "idiota": "ingênuo"
}

Nota: A substituição é case-insensitive (funciona com "Merda", "MERDA", "merda") e apenas substitui palavras completas (não substitui parciais).

Como Executar

  1. Inicie o proxy:
python proxy.py

O servidor iniciará em http://localhost:5000

  1. Configure seu navegador para usar o proxy:
    • No navegador, acesse: http://localhost:5000/http://www.exemplo.com

Exemplos de Uso

Site Permitido

http://localhost:5000/http://www.google.com

Retorna o conteúdo do Google sem modificações

Site Bloqueado

http://localhost:5000/http://www.redes-sociais.net

Retorna página de bloqueio personalizada com status 403

Site com Conteúdo Filtrado

Se um site contiver a palavra "merda", será substituída por "macacos me mordam" antes de ser enviada ao cliente.

Estrutura de Arquivos

web-proxy-si/
├── proxy.py              # Aplicação principal do proxy
├── requirements.txt      # Dependências Python
├── blocked.json          # Lista de sites bloqueados
├── words.json            # Mapa de palavrões para substituição
├── blocked.html          # Página HTML de bloqueio (renderizada quando site está bloqueado)
├── log.json              # Log de requisições (gerado em runtime)
└── README.md             # Este arquivo

Formato do Log

O arquivo log.json registra cada requisição com a seguinte estrutura:

[
  {
    "timestamp": "2026-05-25T10:28:43.243862",
    "url": "http://www.google.com",
    "acao": "permitido"
  },
  {
    "timestamp": "2026-05-25T10:28:46.301044",
    "url": "http://www.sitex.com",
    "acao": "bloqueado"
  }
]

As ações registradas são:

  • "permitido": Conteúdo foi repassado sem modificações
  • "bloqueado": Domínio estava na lista negra, acesso recusado
  • "filtrado": Conteúdo foi modificado (palavrões substituídos)
  • "erro": Erro ao acessar o servidor de origem

Desenvolvido para: Sistemas para Internet 2 — Turma U — 2026/1

About

Web Proxy Filtrante desenvolvido em Python com Flask e Requests. Intercepta requisições HTTP, gerencia listas de bloqueio por domínio, realiza auditoria de acessos em tempo real (JSON) e aplica filtros de conteúdo case-insensitive via Regex sem quebrar o layout das páginas.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages