Se você estuda segurança digital ou realiza automações como web scraping, já deve ter se deparado com bloqueios de IP. Uma técnica avançada para mitigar esse problema é forçar a rede Tor (The Onion Router) a rotacionar seus nós de saída de forma cíclica e automatizada.
1. O Conceito: Como o Tor funciona normalmente
O Tor direciona o tráfego de internet por meio de três servidores voluntários criptografados ao redor do mundo:
- Nó de Entrada: Sabe quem você é, mas não o que você está acessando.
- Nó do Meio: Passa os dados adiante de forma totalmente criptografada.
- Nó de Saída: Leva você até o destino final. O site de destino enxerga apenas o IP deste nó, preservando a sua identidade.
Por padrão, o Tor mantém esse circuito ativo por alguns minutos antes de mudá-lo de forma transparente. No entanto, em testes de penetração e rotinas de coleta de dados, precisamos de uma frequência muito maior.
2. A Lógica da Automação
Para forçar a mudança imediata de IP, um script interage diretamente com o serviço do Tor instalado no sistema operacional utilizando a porta de controle (Tor ControlPort).
O fluxo lógico acontece em três etapas simples:
- O usuário define o intervalo de tempo desejado (por exemplo, 10 segundos).
- A cada ciclo concluído, o script envia um sinal de comando chamado
NEWNYMpara a porta de controle do Tor. - O serviço do Tor derruba o circuito atual instantaneamente e constrói um novo. Como o nó de saída muda, o seu endereço de IP público na internet é renovado.
3. O Código do Script (Python)
Abaixo está o script estruturado em Python que utiliza a biblioteca oficial stem para controlar o Tor e a biblioteca requests para validar a mudança de IP em tempo real:
import time
import requests
from stem import Signal
from stem.control import Controller
def alterar_ip_tor():
# Conecta à porta de controle do Tor (padrão é 9051)
with Controller.from_port(port=9051) as controlador:
# Autentica-se no serviço (requer configuração no torrc)
controlador.authenticate(password="sua_senha_aqui")
# Envia o sinal para renovar o circuito (Novo IP)
controlador.signal(Signal.NEWNYM)
def obter_ip_atual():
# Configura o proxy local do Tor (SOCKS5 padrão)
proxies = {
'http': 'socks5h://127.0.0.1:9050',
'https': 'socks5h://127.0.0.1:9050'
}
try:
# Faz uma requisição para identificar o IP público atual
resposta = requests.get('https://api.ipify.org', proxies=proxies, timeout=5)
return resposta.text
except Exception as e:
return f"Erro ao conectar: {e}"
if __name__ == "__main__":
intervalo = 10 # Intervalo em segundos
print("[*] Iniciando o alterador de IP do Tor...")
while True:
try:
alterar_ip_tor()
ip = obter_ip_atual()
timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
print(f"[{timestamp}] Novo IP do Tor: {ip}")
time.sleep(intervalo)
except KeyboardInterrupt:
print("\n[-] Automação interrompida pelo usuário.")
break
4. Simulador Interativo (Ambiente Fictício)
Para entender o conceito na prática antes de configurar o seu terminal Linux, utilize o nosso Simulador Fictício abaixo. Ele emula em tempo real o comportamento síncrono entre as saídas de log do terminal e a resposta do navegador de testes a cada 10 segundos:
5. Vantagens e Desvantagens da Técnica
Vantagens
- Anonimato Dinâmico: Torna o rastreamento comportamental baseado em IP extremamente complexo.
- Evasão de Bloqueios Rate-Limit: Excelente para scripts de raspagem de dados que são bloqueados ao fazer requisições em massa.
Desvantagens
Lentidão Extrema: Criar e validar um circuito criptografado de 3 nós a cada 10 segundos exige muito processamento e tempo de resposta da rede, tornando a navegação manual muito lenta.
Quebra de Sessões: Qualquer download ativo ou sessão que necessite de persistência de login será derrubada assim que o IP sofrer a alteração.