Interceptação de Requisições em Aplicativos Flutter para Windows e Android com HTTP Toolkit
Este guia é destinado a projetos Flutter que rodem no Windows e Android. Utilizamos o HTTP Toolkit, uma ferramenta que permite visualizar e inspecionar as requisições HTTP/HTTPS feitas pelo aplicativo.
✅ Pré-requisitos
- Instalar o HTTP Toolkit no seu computador.
- Certificar-se de que o aplicativo Flutter esteja preparado para interceptar requisições usando
HttpOverrides
.
📱 Interceptando requisições no Android
-
Instale o app HTTP Toolkit para Android via Play Store.
-
Conecte o dispositivo Android ao computador e ative a Depuração USB nas opções de desenvolvedor.
-
No HTTP Toolkit (Windows):
- Clique em Intercept no menu lateral.
- Selecione Android device via ADB.
-
Abra o app HttpToolkit no Android e siga as instruções para instalar o certificado de segurança.
![]() | ![]() |
![]() | ![]() |
- Execute seu aplicativo Android e realize as requisições que deseja interceptar; elas aparecerão em tempo real no painel do HTTP Toolkit no menu View.
💻 Interceptando requisições no Windows
-
Abra o HTTP Toolkit no Windows.
-
Execute seu aplicativo Flutter no Windows normalmente.
-
No HTTP Toolkit, clique em Intercept e selecione Anything.
-
Na seção Step 2: Trust the certificate authority:
- Clique em Export CA certificate.
- Instale o certificado gerado no seu sistema.
⚡ Observação:
A exportação e instalação do certificado é necessária para interceptar tráfego HTTPS corretamente. O HTTP Toolkit cria uma Autoridade Certificadora (CA) local e utiliza certificados dessa CA para descriptografar conexões HTTPS interceptadas. -
Realize as requisições que deseja monitorar; elas aparecerão em tempo real no painel do HTTP Toolkit no menu View.
🛠️ Código de Configuração no Flutter
Para permitir a interceptação, é necessário sobrescrever o comportamento padrão das conexões HTTP no seu aplicativo. Veja como:
Classe de Sobrescrição
import 'dart:io';
import 'package:flutter/foundation.dart';
class AppHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
final client = super.createHttpClient(context);
if (!kDebugMode) return client; // Só ativa em modo debug
if (Platform.isWindows) {
client.findProxy = (uri) => 'PROXY localhost:8000'; // Direciona para proxy local no Windows
}
client.badCertificateCallback = (X509Certificate cert, String host, int port) => true; // Aceita certificados inválidos
return client;
}
}
Explicação do Código
createHttpClient
: Cria um novoHttpClient
, baseando-se no padrão do Flutter.!kDebugMode
: Garante que o proxy só será utilizado durante o desenvolvimento, nunca em produção.Platform.isWindows
: Verifica se o aplicativo está rodando no Windows.client.findProxy = (uri) => 'PROXY localhost:8000';
: Redireciona todas as requisições para o proxy local configurado pelo HttpToolkit, apenas no Windows.badCertificateCallback
: Permite que oHttpClient
aceite qualquer certificado SSL, mesmo que inválido (necessário para interceptação).
Inicialização no main.dart
Future<void> main() async {
HttpOverrides.global = AppHttpOverrides();
runApp(AppWidget());
}
Explicação da Inicialização
HttpOverrides.global = AppHttpOverrides();
: Define a sobrescrição global para todas as requisições HTTP do aplicativo.runApp(AppWidget());
: Inicializa o aplicativo normalmente.
Conclusão
Com essa configuração, você consegue visualizar, monitorar e depurar todas as requisições feitas pelo seu app Flutter no Windows e Android de forma rápida e eficiente, inclusive tráfego HTTPS.
Fonte: https://httptoolkit.com/