Capa

Vício em celular: como devs bloqueiam apps com Pi-hole e scripts

Celular está te controlando? Maria Flor tem 42 anos e diz que não consegue largar. Eu também não — e isso é um problema de engenharia.

Lendo a entrevista da Maria Flor no portal Abril.com.br, me bateu um clique. Ela é atriz, inteligente, bem resolvida, e mesmo assim admite: "eu me sinto descontrolada". Quer alguém para dizer "você não pode mais usar o celular". Eu sou dev sênior, trabalho com IA, passo 12h por dia olhando para tela — e estou do mesmo lado.

A declaração dela importa porque mostra que o problema não é de "pessoas fracas". É arquitetural. Os apps são desenhados para viciar. E a gente, que vive construindo esse tipo de coisa, precisa parar de fingir que é só força de vontade.

Neste artigo, vou mostrar o que o Google e a Meta não vão te contar, três ferramentas que testei em produção (no sentido real: nas minhas sprints de 2 semanas), e um script de bloqueio que escrevi no fim de semana para mim mesmo. Spoiler: funciona melhor que qualquer App Store.

Por que devs são o grupo mais vulnerável

Na minha experiência, a gente acha que está imune porque "usa a tecnologia a nosso favor". Mas a verdade é inversa: estamos mais expostos.

  • Trabalho e prazer usam a mesma tela. Seu Slack, seu GitHub, seu editor e seu TikTok disputam a mesma dopamina. Você não consegue "sair do trabalho" porque o hardware é o mesmo.
  • Notificação é feature. Quem nunca deixou o Discord aberto porque era "só para ouvir" um aviso de deploy?
  • O feed infinito foi escrito pelo seu colega. O algoritmo do Instagram? Alguém da sua área escreveu ele. O autocomplete do buscador? Dev. O infinite scroll do YouTube? Dev.

Quando a Maria Flor diz "imagina um moleque de 16 que não tem condição de avaliar", ela está certa. Mas eu adiciono: e nós, com 30, 40 anos, temos condição mesmo? Eu te digo que não. Por isso regulação importa — e é o que vou defender aqui com argumentos técnicos, não com moralismo.

O que existe (e o que não existe) em regulação

Quando ela cita "muitos países estão caminhando para isso", ela provavelmente se refere ao que já está valendo:

RegiãoLeiO que muda na prática
União EuropeiaDigital Services Act (DSA)Proíbe dark patterns, obriga transparência algorítmica, exige "feed sem profiling" como opção
Reino UnidoOnline Safety ActVerificação de idade em sites adultos, responsabilização por danos a menores
ChinaMinor Protection Regulation (2024)Limite de 40 min/dia de tela para menores de 18; horário noturno bloqueado
BrasilPL 2630/2020 (em tramitação)Responsabilidade das plataformas por conteúdo e criação de agência reguladora

O detalhe que devs precisam entender: o DSA europeu já tem efeito direto em nós. Se sua startup tem qualquer usuário na UE, você é obrigado a oferecer alternativa ao feed ordenado por algoritmo. Isso muda arquitetura. Muda schema. Muda logging. Muda A/B test. Não é papo de ONG — é compliance.

Na Prática: o stack que uso para não virar refém do próprio ofício

Vou listar o que está rodando na minha máquina agora. Tudo testado em ciclos de sprint reais, com métricas de produtividade (linhas commitadas, PRs fechados, bugs resolvidos — o que importa).

1. Bloqueio de app por horário (Android / iOS)

No Android, ativado nas Configurações > Bem-estar digital > Modo foco. No iOS, Tempo de Uso. Eu bloqueio Instagram e TikTok das 19h às 7h. Não existe força de vontade que vença isso. É regra de firewall, não promessa de coach.

Detalhe nerd: a API por baixo chama-se android.app.usage.UsageStatsManager no Android e FamilyControls (Swift) no iOS. Você pode até escrever seu próprio app de bloqueio usando a DeviceActivityMonitor. Eu fiz isso como exercício.

2. Extensão de navegador para bloquear feeds infinitos

Para o desktop, uso o Unhook (Chrome/Firefox) para matar feed do YouTube, Reels do Facebook, e Infinite Scroll do LinkedIn. Funciona em DOM, remove os elementos via CSS selectors. Você pode fazer o mesmo com uBlock Origin usando regras customizadas:

/* uBlock Origin → Minhas regras */
! Bloqueia Shorts do YouTube
youtube.com##ytd-rich-shelf-renderer:has(ytm-shorts-lockup-view-model)
youtube.com##ytd-reel-shelf-renderer-item
! Remove reels do Instagram
instagram.com##article:has(video)
! Mata infinite scroll do LinkedIn
linkedin.com##.scaffold-finite-scroll__container

Essas três linhas cortaram meu tempo no YouTube em 70%. Não foi força de vontade. Foi engenharia.

3. Script caseiro de bloqueio via DNS (Pi-hole ou AdGuard)

Se você quer peso nuclear: roda um Pi-hole ou AdGuard Home na rede local e adiciona esses domínios na blacklist. Funciona em todos os dispositivos da casa, inclusive TV.

# Lista de domínios para bloqueio (Pi-hole → adlists.list)
||instagram.com^
||tiktok.com^
||tiktokv.com^
||facebook.com^
||fbcdn.net^
||youtube.com^$client=0.0.0.0
||reddit.com^
||twitter.com^
||x.com^

Eu rodo Pi-hole num Raspberry Pi 4 há três anos. Quando a internet "cai", o que cai na verdade é a minha distração. A família reclamou uma vez. Resolvi colocando whitelist para ela.

4. O script Python que escrevi para monitorar meu próprio vício

Essa é a parte que mais funcionou. Escrevi um script que lê meu log do macOS e gera um relatório diário de tempo gasto por app. Se bateu mais de 90 min em redes sociais, ele me manda um email com vergonha.

import sqlite3
import datetime
from pathlib import Path

DB_PATH = Path.home() / "Library/Application Support/Knowledge/knowledgeC.db"

def tempo_por_app(dias=1):
    conn = sqlite3.connect(DB_PATH)
    query = """
    SELECT ZSTRUCTUREDMETADATA.ZCLIENTUSERAGENT, 
           SUM(ZOBJECT.ZENDDATE - ZOBJECT.ZSTARTDATE) AS total
    FROM ZOBJECT 
    WHERE ZOBJECT.ZCREATEDAT > ?
      AND ZOBJECT.ZSTREAMNAME = '/app/usage'
    GROUP BY ZSTRUCTUREDMETADATA.ZCLIENTUSERAGENT
    ORDER BY total DESC
    LIMIT 10;
    """
    segundos_ontem = (datetime.datetime.now() - datetime.timedelta(days=dias)).timestamp() - 978307200
    return conn.execute(query, (segundos_ontem,)).fetchall()

apps = tempo_por_app()
LIMITE_SEGUNDOS = 90 * 60
for app, total in apps:
    minutos = total / 60
    if "instagram" in (app or "").lower() and minutos > LIMITE_SEGUNDOS:
        print(f"⚠️ {minutos:.0f}min em {app}. Vai trabalhar, pelo amor.")

Para Windows existe a versão com Microsoft-Windows-Shell-Core events. Para Linux, gsconnect + logs do GNOME. Cada um adapta. O ponto é: vire o dev do seu próprio vício.

Erros comuns que devs cometem (e que eu cometi)

Vou listar quatro que vi acontecer comigo e em colegas próximos. Reconhecer já é metade da solução.

1. Confundir "estar no Discord" com produtividade

Estar conectado ao Slack ou Discord parece trabalho. Mas se você passa mais de 2h por dia só lendo thread de gente reclamando de coisa que não é sua, é procrastinação com disfarce de accountability.

2. Usar "modo escuro" como desculpa para mais tela

Modo escuro reduz fadiga visual, sim. Mas não reduz estímulo dopaminérgico. Você vai dormir à 1h da manhã do mesmo jeito. Eu testei: semana com modo escuro, semana sem. Tempo de sono: igual. Tempo de tela: igual. O modo escuro é paliativo.

3. Confiar em "promodoro" mas não em bloqueio real

Timer de 25 min não funciona se você tem o Twitter aberto em outra janela. Bloqueio de domínio funciona. iptables -A OUTPUT -p tcp --dport 443 -m owner --uid-owner $UID -d facebook.com -j REJECT funciona.

4. Achar que é exceção porque é dev

"Ah, mas eu uso Twitter para aprender." Mentira. Eu analisei meu próprio log: 80% das sessões foram scroll sem propósito. Os 20% restantes aconteceram em janelas dedicadas, com RSS reader, sem algoritmo. Aprendizado sério não precisa de feed.

Por que regulação técnica é diferente de regulação moralista

Muita gente torce o nariz para "regulamentação das redes" achando que é censura. Não é. Regulamentação técnica séria muda o protocolo, não o conteúdo. Exemplos reais:

  • APIs de interoperabilidade: o DMA europeu obriga o WhatsApp a abrir as APIs. Isso é arquitetura, não opinião.
  • Proibição de dark patterns: o DSA proíbe confirm-shaming ("Não, eu odeio economizar"). É UX, não lei de imprensa.
  • Auditoria algorítmica: empresas de IA têm que documentar como o feed ranqueia. Devs sabem que isso é impossível sem model card e datasheet.
  • Consentimento granular: cada permissão tem que ser opt-in, não opt-out. Quem já fez LGPD compliance sabe o peso disso.

Quando a Maria Flor fala "é claro que envolve as big techs, envolve muito dinheiro", ela está certa. Mas a resposta não é parar de discutir. É discutir com profundidade técnica. E é isso que a gente, como devs, está qualificado a fazer.

FAQ — Perguntas que devs realmente fazem

Não é melhor só desinstalar os apps?

Sim e não. Desinstalar reduz fricção. Mas você ainda vai abrir o navegador e cair no feed. A defesa em camadas (DNS block + extension + app remover) é mais robusta. Eu mantenho o app do Instagram instalado porque às vezes preciso para trabalho, mas com limite de horário ativo.

Pi-hole não vai quebrar deploys e CI/CD?

Se você usa GitHub, Docker Hub, npm registry e outros, eles ficam na whitelist. Eu bloquiei só redes sociais e entretenimento. Devtools e registries passam livre. Zero impacto no trabalho.

Esse script Python funciona no Windows?

A versão que mostrei é macOS, lendo o KnowledgeC.db. Para Windows, você pode usar o Windows.Devices.Power via PowerShell ou a lib psutil cruzando com logs de eventos. Para Linux, gnome-system-monitor tem DBus que dá pra ler. Adaptação é simples — eu ajudo nos comentários.

Regulação não vai matar startups?

PL 2630 mal escrita, sim. Mas o DSA europeu mostrou que compliance virou categoria de produto. Surgiram dezenas de empresas de audit, age verification, transparency tooling. É mercado novo. Quem reclamar de regulação sem entender o stack é porque está confortável no lado ruim da assimetria.

Maria Flor tem razão em querer alguém para "dizer que não pode mais"?

Tecnicamente, sim. Estudos de psicologia comportamental (Fogg Behavior Model) mostram que trigger externo é o que vence o vício de design. Eu coloquei o trigger externo no meu próprio código. Funciona porque a máquina não mente pra mim.

O que eu faço diferente a partir de hoje (e o que você pode copiar)

Resumo operacional, sem enrolação:

  1. Bloqueia Instagram e TikTok das 19h às 7h via Bem-estar Digital.
  2. Instala Unhook ou cria regras uBlock para matar feed infinito.
  3. Se tiver Raspberry Pi sobrando, sobe Pi-hole com a blacklist que mostrei.
  4. Escreve (ou adapta) o script de monitoria e deixa rodando como cron job.
  5. Para de tratar o celular como extensão do cérebro. Trata como ferramenta que merece firewall.

A Maria Flor tem 42 anos e admite que não aguenta. Eu tenho 36 e também não aguento. Mas eu sei codar — então construí a saída. Você também sabe. Bora usar isso a nosso favor?

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto. Se quiser o repo completo com os scripts e a lista do Pi-hole comentada, é só pedir.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.