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.
- 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
- Python 3.7 ou superior
- Flask 2.3.3
- requests 2.31.0
- Clone o repositório ou descompacte o arquivo:
cd web-proxy-si- Instale as dependências:
pip install -r requirements.txtDefine quais domínios serão bloqueados. Exemplo:
{
"bloqueados": [
"www.sitex.com",
"redes-sociais.net",
"joguinhos.io"
]
}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).
- Inicie o proxy:
python proxy.pyO servidor iniciará em http://localhost:5000
- Configure seu navegador para usar o proxy:
- No navegador, acesse:
http://localhost:5000/http://www.exemplo.com
- No navegador, acesse:
http://localhost:5000/http://www.google.com
Retorna o conteúdo do Google sem modificações
http://localhost:5000/http://www.redes-sociais.net
Retorna página de bloqueio personalizada com status 403
Se um site contiver a palavra "merda", será substituída por "macacos me mordam" antes de ser enviada ao cliente.
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
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