Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
trawl — Mecanismo de scraping auto-hospedado — contorna qualquer desafio JS e captcha: Cloudflare, Turnstile, reCAPTCHA, hCaptcha, GeeTest. Alternativa ao FlareSolverr e Byparr e substituto direto para a sua stack *arr. | Kitploit
Ferramentas/GitHubGitHub/germondai/trawl
Proxies Web e InterceptaçãoColeta de InformaçõesSegurança WebUtilitários e FrameworksRastreadorAnti-BotFalsificação de Impressão DigitalBypass de CAPTCHA
GitHubgermondai/trawl

trawl

Mecanismo de scraping auto-hospedado — contorna qualquer desafio JS e captcha: Cloudflare, Turnstile, reCAPTCHA, hCaptcha, GeeTest. Alternativa ao FlareSolverr e Byparr e substituto direto para a sua stack *arr.

864466há 2h 37mRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Ver Repositório
Site
Compartilhar



TRAWL

Bem-vindo ao TRAWL! 👋

Web scraping auto-hospedado para aplicações e agentes de IA. Busque páginas através da API nativa ou conecte um cliente MCP para ler Markdown limpo, extrair dados estruturados, capturar screenshots e inspecionar a atividade do navegador.

O TRAWL começa com uma requisição HTTP rápida, reutiliza sessões de navegador já resolvidas e escala para o Camoufox e um proxy residencial opcional quando um site exige mais trabalho. Ele lida com desafios JavaScript e CAPTCHAs suportados e oferece um dashboard local para ver o que teve sucesso, o que falhou e o que levou tempo.

Para usuários existentes do FlareSolverr, o endpoint compatível /v1 funciona com o Prowlarr e outras ferramentas *arr. O roteamento adaptativo e a reutilização de sessões do TRAWL foram projetados para requisições mais rápidas e confiáveis; benchmarks selecionados na mesma máquina mostram respostas mais rápidas do que o FlareSolverr e o Byparr, com resultados variando conforme o site e o estado da sessão.

Recursos

  • Ferramentas MCP para agentes de IA - leia páginas como Markdown ou texto, faça scraping de HTML, extraia registros JSON, capture screenshots e inspecione diagnósticos do navegador a partir de URLs públicas conhecidas
  • Execução em 4 camadas - requisição HTTP simples → sessão de navegador em cache → resolução de desafio do zero → proxy residencial opcional
  • Extração estruturada e screenshots - selecione campos de elementos repetidos, renderize páginas JavaScript e capture uma viewport, página completa ou elemento específico
  • Proxy HTTP/HTTPS ciente de desafios - encaminhamento direto para tráfego normal, escalonamento automático de camadas para barreiras detectadas, além de WebSockets, corpos binários e suporte a Range/206
  • Dashboard local de métricas - histórico persistente de requisições, resultados por camada, causas de falha e atualizações ao vivo
  • Tratamento multi-WAF - detecção e fluxos de navegador dedicados para Cloudflare, Akamai Bot Manager e Imperva/Incapsula
  • Resolução nativa de captcha - CF Turnstile/Interstitial, reCAPTCHA v2 (STT gratuito), hCaptcha, GeeTest v4 Slide, ALTCHA e Friendly Captcha v1/v2
  • Camoufox Firefox - fingerprint corrigido no nível C++/Juggler para reduzir sinais de automação
  • Cache de sessão - cookies resolvidos e identidade do navegador armazenados no Redis; sessões aceitas podem evitar uma nova resolução
  • Compatível com FlareSolverr - funciona com Prowlarr, Jackett, Sonarr e todo o ecossistema *arr prontamente
  • Nenhuma API de solver paga necessária - o áudio do reCAPTCHA pode usar o endpoint STT gratuito do Google ou um serviço Whisper local opcional

Patrocinadores

Ver/Recolher Tudo
Birght Data Bright Data - A plataforma mais poderosa para Web Unlocker, SERP API e ferramentas de web scraping.

Por que Bright Data?
• Web Unlocker - contorne qualquer proteção anti-bot
• SERP API - resultados do Google, Bing e mais em tempo real
• Scraping Browser e scrapers dedicados
• Rede massiva de proxies residenciais
• Feito para escala e confiabilidade

Comece gratuitamente com o Bright Data!
NodeMaven NodeMaven - O provedor de proxy mais eficiente para Web Scraping e Automação, com os IPs de mais alta qualidade do mercado.

Por que NodeMaven?
• Segmentação por CEP
• 99,9% de uptime
• Filtragem de IP: todos os proxies têm pontuação de fraude <97%
• Nenhum KYC necessário
• Ferramentas gratuitas exclusivas: Proxy Bandwidth Checker, Meta Tag Checker, IP Lookup e outras!

Códigos especiais para usuários do TRAWL:
• TRAWL35 - 35% de desconto em Proxies Móveis e Residenciais • - 40% de desconto em Proxies ISP (Estáticos)

Dashboard local

Dashboard de métricas do TRAWL mostrando dados ilustrativos de requisições

A captura de tela usa tráfego ilustrativo. Seu dashboard em http://localhost:8191/dashboard exibe apenas as requisições tratadas pela sua instância do TRAWL. Consulte o guia de métricas para configuração.

Início rápido```bash

Clone and configure

git clone https://github.com/germondai/trawl cd trawl cp .env.example .env

Start scraper + Redis

docker compose up -d

Verify

curl http://localhost:8191/health

root@kitploit:~
A primeira inicialização leva de 15 a 30 segundos enquanto o pool de navegadores aquece. As inicializações subsequentes são rápidas.

### Catálogos de aplicações NAS

Prefere uma instalação com um clique? O TRAWL está disponível nos catálogos de aplicações da comunidade tanto para TrueNAS como para Unraid:

- [TrueNAS Community Apps](https://apps.truenas.com/catalog/trawl_community/) —
  abra **Apps → Discover Apps** e procure por **TRAWL**.
- [Unraid Community Apps](https://ca.unraid.net/apps/trawl-1o4q23p06utr4h) —
  abra o separador **Apps** e procure por **Trawl**.

Agradecimentos aos contribuidores das comunidades TrueNAS e Unraid que empacotaram e publicaram estas integrações.

## API

### Compatível com FlareSolverr (`/v1`)```bash
curl -X POST http://localhost:8191/v1 \
  -H 'Content-Type: application/json' \
  -d '{"cmd":"request.get","url":"https://nowsecure.nl","maxTimeout":60000}'

API Nativa (/scrape)

Retorna metadados mais ricos: tier, timings, sessionCached, lista completa de cookies.```bash curl -X POST http://localhost:8191/scrape
-H 'Content-Type: application/json'
-d '{"url":"https://nowsecure.nl","maxTimeout":60000}'

root@kitploit:~
### Ferramentas MCP (`/mcp`)

Defina `MCP_ENABLED=true` para expor as ferramentas Streamable HTTP independentes de cliente do TRAWL
para conteúdo legível, HTML, extração estruturada, capturas de ecrã e diagnósticos de navegador a qualquer
aplicação ou agente de IA compatível com MCP. Elas carregam URLs públicos conhecidos; o TRAWL não
fornece pesquisa ou classificação na web. Consulte o
[guia de integração MCP](https://github.com/germondai/trawl/blob/dev/apps/docs/integrations/mcp.md).

### Conectar Prowlarr / Jackett

Defina o URL do FlareSolverr para:```
http://localhost:8191        # running on the same host
http://trawl:8191            # running via Docker Compose on the same network

Proxy HTTP/HTTPS contornando desafios

Alguns sites vinculam a liberação do Cloudflare à impressão digital completa da conexão do navegador que resolveu o desafio. O fluxo /v1 não pode ajudar nesse caso: o Prowlarr mantém apenas o cookie + user-agent e refaz a requisição da página com seu próprio cliente HTTP, o que faz o Cloudflare desafiar novamente — o cookie não é portável. Para esses indexadores, habilite o proxy de encaminhamento do TRAWL e adicione-o ao Prowlarr como um proxy HTTP:```env MITM_ENABLED=true MITM_PORT=8192 MITM_CA_DIR=/data/proxy-ca # persist the CA (mount a volume) MITM_MAX_TIER=4 # cap escalation (e.g. 3 to stay off residential) MITM_ALWAYS_SCRAPE=false # opt in to bypass the proxy's direct Tier 0 probe

root@kitploit:~
Por padrão, o listener vincula `0.0.0.0` para que clientes em uma rede bridge do Docker possam alcançá-lo; defina `MITM_HOST=127.0.0.1` para restringi-lo ao loopback em um host bare-metal.

1. Instale a CA do proxy no trust store do cliente para que ele aceite os certificados por host:
   `curl http://<trawl-host>:8191/proxy-ca.crt` → adicione ao CA store do contêiner Prowlarr
   (por exemplo, um script linuxserver `/custom-cont-init.d` que o copia para
   `/usr/local/share/ca-certificates/` e executa `update-ca-certificates`).
2. Prowlarr → Settings → Indexer Proxies → **HTTP**, host `<trawl-host>`, porta `8192`.
   Atribua uma tag se apenas indexers selecionados devem usá-lo.

Requisições comuns usam um caminho direto HTTP/TLS. Respostas pequenas de HTML, JSON e texto são armazenadas em buffer para detecção de desafios; desafios detectados escalam pelo mesmo pipeline de camadas que `POST /scrape`. Vídeos e respostas binárias grandes são transmitidos diretamente. Requisições Range são encaminhadas de ponta a ponta e podem escalar quando sua resposta é um desafio detectado; upgrades de WebSocket usam um relay direto sem escalonamento para navegador.

Consulte a [documentação completa do proxy](https://github.com/germondai/trawl/blob/dev/apps/docs/proxy/overview.md) para detalhes de roteamento, tráfego suportado, limitações, instalação da CA e exemplos de cliente.

> ⚠️ Um proxy MITM pode se passar por qualquer host para um cliente que confie em sua CA. Exponha-o apenas em uma interface privada (localhost / uma rede Docker privada), nunca publicamente.

### Instalando o certificado CA do proxy

O proxy autogera uma CA raiz na primeira execução. Seu certificado e chave privada são persistidos em `MITM_CA_DIR` (padrão `/data/proxy-ca`). Certificados por host são emitidos e armazenados em cache na memória enquanto o TRAWL é executado; eles não precisam de instalação separada porque são assinados pela raiz persistente. Todo cliente que usa o proxy deve confiar nessa raiz. Sem isso, o HTTPS falha com `ERR_CERT_AUTHORITY_INVALID` (navegadores) ou `PKIX path building failed` (Java).

Baixe a CA uma vez por cliente:```bash
curl http://<trawl-host>:8191/proxy-ca.crt -o trawl-ca.crt
# or in a Docker setup where the API isn't reachable from outside:
docker cp trawl:/data/proxy-ca/ca.crt ./trawl-ca.crt

macOS (keychain do sistema — afeta a maioria dos aplicativos, incluindo Safari, curl, wget)```bash

sudo security add-trusted-cert -d -r trustRoot
-k /Library/Keychains/System.keychain ./trawl-ca.crt

Verify

security find-certificate -c "TRAWL MITM Proxy CA"

Remove later

sudo security delete-certificate -c "TRAWL MITM Proxy CA"
/Library/Keychains/System.keychain

root@kitploit:~
#### Linux (Debian/Ubuntu — em todo o sistema para curl, wget, apt, etc.)```bash
sudo cp trawl-ca.crt /usr/local/share/ca-certificates/trawl-ca.crt
sudo update-ca-certificates
# Verify
awk '/BEGIN/{c++} c==2' /etc/ssl/certs/ca-certificates.crt | grep -c "TRAWL MITM"

Linux (RHEL/Fedora/Amazon)```bash

sudo cp trawl-ca.crt /etc/pki/ca-trust/source/anchors/trawl-ca.crt sudo update-ca-trust

root@kitploit:~
#### Trust stores do Firefox e do NSS

Instalações do Firefox que não usam raízes do sistema operacional precisam de uma importação NSS por perfil:```bash
# Firefox 115+ uses a file-backed NSS DB; older versions use the legacy libnssdb format.
# The certutil command is the same either way.
certutil -A -n "TRAWL MITM" -t "CT,C,C" -i trawl-ca.crt \
  -d sql:$HOME/.mozilla/firefox/<profile-dir>
# Or via Firefox UI: Settings → Privacy & Security → Certificates → View Certificates →
# Authorities → Import… → check "Trust this CA to identify websites".
# Profile dir location: about:profiles in Firefox.

Chrome / Chromium (Linux: separado do armazenamento de confiança do sistema)

O Chrome usa o armazenamento de confiança do sistema no macOS e Windows, mas tem o seu próprio no Linux:```bash

Option A: launch Chrome with --user-data-dir + NSS DB update (same as Firefox).

Option B: use Chrome's --ignore-certificate-errors-spki-list= (per-session, less safe).

Option C: add the cert to the system store (above) — Chrome picks it up automatically on

most Linux distros via the nss-tool lookup.

root@kitploit:~
#### Java (incluindo JDownloader)```bash
# Find the JRE cacerts file for your client.
#   JDownloader:    <install>/jre/lib/security/cacerts
keytool -importcert -alias trawl -file trawl-ca.crt \
  -keystore "<path-to-cacerts>" -storepass changeit
# If `keytool` reports "Certificate already exists in keystore", use -delete first:
#   keytool -delete -alias trawl -keystore "<path-to-cacerts>" -storepass changeit

Prowlarr, Sonarr e Radarr são aplicações .NET, não aplicações Java. Para as suas instalações baseadas em Docker, adicione o CA ao armazenamento de confiança do sistema Linux do contentor. Um padrão comum do LinuxServer é um script /custom-cont-init.d:```yaml

In the client's Compose service:

volumes:

  • ./trawl-ca.crt:/config/trawl-ca.crt:ro
  • ./install-trawl-ca.sh:/custom-cont-init.d/50-install-trawl-ca:ro
root@kitploit:~
| `-s` | `--server` | `SERVER` | `http://localhost:8080` | URL base do servidor |
| `-t` | `--token` | `TOKEN` | | Token de autenticação |
| `-o` | `--output` | `OUTPUT` | | Arquivo de saída |
| `-f` | `--format` | `FORMAT` | `json` | Formato de saída |
| `-v` | `--verbose` | | | Saída detalhada |
| `-q` | `--quiet` | | | Modo silencioso |
| `-d` | `--debug` | | | Modo de depuração |
| `-c` | `--config` | `CONFIG` | | Arquivo de configuração |
| `-n` | `--no-color` | | | Desabilitar saída colorida |
| `-y` | `--yes` | | | Confirmar automaticamente |
| `-h` | `--help` | | | Mostrar mensagem de ajuda |
| `-V` | `--version` | | | Mostrar versão |

### Exemplos

```bash
# Iniciar o servidor
python3 server.py --port 8080

# Executar o cliente
python3 client.py --server http://localhost:8080

# Executar com opções
python3 client.py -s http://localhost:8080 -t mytoken -o output.json -f json -v

# Usar arquivo de configuração
python3 client.py -c config.yaml

# Modo silencioso
python3 client.py -q

# Modo de depuração
python3 client.py -d

Estrutura do Projeto

root@kitploit:~
project/
├── server.py           # Arquivo principal do servidor
├── client.py           # Arquivo principal do cliente
├── config.yaml         # Arquivo de configuração
├── requirements.txt    # Dependências do projeto
├── README.md           # Documentação do projeto
├── LICENSE             # Arquivo de licença
├── modules/            # Módulos do projeto
│   ├── __init__.py
│   ├── core.py         # Módulo principal
│   ├── utils.py        # Módulo de utilitários
│   └── handlers.py     # Módulo de manipuladores
├── tests/              # Testes do projeto
│   ├── __init__.py
│   ├── test_core.py
│   └── test_utils.py
└── docs/               # Documentação do projeto
    ├── index.md
    └── api.md

Desenvolvimento

Configuração do Ambiente

root@kitploit:~
# Clonar o repositório
git clone https://github.com/username/project.git
cd project

# Criar ambiente virtual
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# ou
venv\Scripts\activate     # Windows

# Instalar dependências
pip install -r requirements.txt

# Instalar dependências de desenvolvimento
pip install -r requirements-dev.txt

Executando os Testes

root@kitploit:~
# Executar todos os testes
pytest

# Executar com cobertura
pytest --cov=modules --cov-report=html

# Executar testes específicos
pytest tests/test_core.py

# Executar com saída detalhada
pytest -v

# Executar em paralelo
pytest -n auto

Verificação de Código

root@kitploit:~
# Executar linter
flake8 modules/

# Executar formatador
black modules/

# Executar verificador de tipos
mypy modules/

# Executar verificações de segurança
bandit -r modules/

# Executar todas as verificações
make lint

Compilação

root@kitploit:~
# Compilar o projeto
python3 -m build

# Compilar pacote wheel
python3 setup.py bdist_wheel

# Compilar pacote source
python3 setup.py sdist

# Limpar artefatos de compilação
make clean

Implantação

Implantação com Docker

root@kitploit:~
# Compilar imagem Docker
docker build -t project:latest .

# Executar contêiner
docker run -d -p 8080:8080 --name project project:latest

# Executar com variáveis de ambiente
docker run -d -p 8080:8080 \
  -e SERVER_PORT=8080 \
  -e LOG_LEVEL=info \
  --name project project:latest

# Usar docker-compose
docker-compose up -d

# Visualizar logs
docker-compose logs -f

# Parar contêiner
docker-compose down

Implantação Manual

root@kitploit:~
# Instalar o pacote
pip install .

# Instalar em modo de desenvolvimento
pip install -e .

# Executar o servidor
python3 server.py --port 8080 --host 0.0.0.0

# Executar como serviço
systemctl start project
systemctl enable project

Solução de Problemas

Problemas Comuns

Problema: Porta já em uso

root@kitploit:~
# Verificar processo usando a porta
lsof -i :8080

# Encerrar processo
kill -9 <PID>

# Ou usar porta diferente
python3 server.py --port 8081

Problema: Permissão negada

root@kitploit:~
# Verificar permissões
ls -la

# Alterar permissões
chmod +x server.py
chmod +x client.py

Problema: Módulo não encontrado

root@kitploit:~
# Verificar instalação do Python
python3 --version

# Verificar pacotes instalados
pip list

# Reinstalar dependências
pip install -r requirements.txt --force-reinstall

Problema: Erro de conexão

root@kitploit:~
# Verificar conectividade
ping localhost

# Verificar portas abertas
netstat -tuln

# Verificar firewall
sudo ufw status

Modo de Depuração

root@kitploit:~
# Executar com saída de depuração
python3 server.py --debug

# Executar com nível de log
python3 server.py --log-level DEBUG

# Executar com rastreamento
python3 -m trace --trace server.py

Obtendo Ajuda

root@kitploit:~
# Mostrar ajuda
python3 server.py --help

# Mostrar versão
python3 server.py --version

# Verificar documentação
man project

# Verificar informações do pacote
pip show project

Perguntas Frequentes

Geral

P: O que é este projeto?

R: Este é um projeto de código aberto que fornece...

P: Qual licença é usada?

R: Este projeto usa a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

P: Como posso contribuir?

R: Consulte o arquivo CONTRIBUTING.md para diretrizes de contribuição.

P: Como posso relatar um problema?

R: Por favor, relate problemas através do GitHub Issues.

Técnico

P: Quais versões do Python são suportadas?

R: Python 3.8 e superior.

P: Quais sistemas operacionais são suportados?

R: Linux, macOS e Windows.

P: Como posso melhorar o desempenho?

R: Considere usar cache, otimizar consultas e usar processamento assíncrono.

P: Como posso contribuir com código?

R: Faça um fork do repositório, crie um branch de funcionalidade, faça commit das alterações e envie um pull request.

Segurança

Práticas Recomendadas

  • Mantenha as dependências atualizadas
  • Use variáveis de ambiente para informações sensíveis
  • Valide e sanitize todas as entradas
  • Use HTTPS para comunicação em rede
  • Implemente limitação de taxa e autenticação
  • Faça auditorias de segurança regularmente
  • Siga o princípio do menor privilégio

Relatando Vulnerabilidades

Se você descobrir uma vulnerabilidade de segurança, por favor:

  1. NÃO abra uma issue pública
  2. Envie um e-mail para [email protected]
  3. Inclua uma descrição detalhada
  4. Forneça etapas para reproduzir
  5. Aguarde uma resposta dentro de 48 horas

Aviso de Segurança

root@kitploit:~
Este software é fornecido "como está", sem garantia de qualquer tipo,
expressa ou implícita, incluindo, mas não se limitando a, garantias de
comercialização, adequação a um propósito específico e não violação.

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para mais detalhes.

Agradecimentos

  • Obrigado a todos os contribuidores
  • Obrigado à comunidade de código aberto
  • Obrigado aos mantenedores de dependências

Contato

  • Autor: Seu Nome
  • E-mail: [email protected]
  • GitHub: @username
  • Site: https://example.com

Links Relacionados

  • Documentação
  • Repositório GitHub
  • Rastreador de Issues
  • Registro de Alterações
  • Diretrizes de Contribuição
  • Código de Conduta

Aviso Legal: Este projeto é apenas para fins educacionais e de pesquisa. Os usuários são responsáveis por cumprir todas as leis e regulamentos aplicáveis. Os autores não são responsáveis por qualquer uso indevido ou danos causados por este software.```bash #!/usr/bin/with-contenv bash cp /config/trawl-ca.crt /usr/local/share/ca-certificates/trawl-ca.crt update-ca-certificates

root@kitploit:~
O LinuxServer executa scripts em `/custom-cont-init.d/` quando o container inicia. Clientes Java como o
JDownloader requerem a importação separada com `keytool` descrita acima.

#### JDownloader 2 (Windows / macOS / Linux — instalação manual)

O JDownloader inclui a sua própria JRE; a CA deve ser importada nela.

1. Localize a JRE: `Settings → Advanced → Java Path` (no JDownloader) ou procure no diretório de instalação:
   - Windows: `C:\Program Files\JDownloader 2\jre\lib\security\cacerts`
   - macOS: `/Applications/JDownloader 2.app/Contents/app/jre/lib/security/cacerts`
   - Linux: `<install>/jre/lib/security/cacerts`
2. Execute o comando `keytool -importcert` acima contra esse arquivo.
3. Reinicie o JDownloader.

#### Windows (repositório de confiança do sistema)```powershell
# Run PowerShell as Administrator.
Import-Certificate -FilePath .\trawl-ca.crt `
  -CertStoreLocation Cert:\LocalMachine\Root
# Remove later
Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.Subject -like "*TRAWL MITM*" } | Remove-Item

Removendo a CA (limpeza)

Todo método de instalação tem um caminho de remoção simétrico. Procure no seu repositório de confiança por TRAWL MITM Proxy CA (o CN da CA) e exclua essa entrada. O certificado e a chave da CA também ficam em <MITM_CA_DIR>/ca.crt e ca.key no host do TRAWL. Excluir qualquer um deles faz com que o TRAWL gere uma nova raiz na próxima inicialização, então os clientes existentes devem instalar o novo certificado.

Camadas```

Request │ ▼ Tier 1: Plain HTTP fetch ────── success ──→ return (< 100ms) │ blocked ▼ Tier 2: Cached session ─────── success ──→ return (~500ms) │ cache miss / expired ▼ Tier 3: Fresh challenge solve ─ success ──→ cache + return │ IP flagged ▼ Tier 4: Residential proxy ──── success ──→ cache + return (15–45s) │ failed ▼ error

root@kitploit:~
## Arquivos Docker Compose

| Arquivo                      | Descrição                                                |
| ---------------------------- | -------------------------------------------------------- |
| `docker-compose.yml`         | Scraper + Redis (padrão)                                 |
| `docker-compose.minimal.yml` | Apenas scraper, sem Redis                                |
| `docker-compose.prod.yml`    | Produção: `restart: always`, limite de memória, healthcheck |

## Imagens Docker (um pacote GHCR, duas variantes de release)

| Tag da imagem                      | Construída a partir de         | Runtime                       | Caso de uso                                                |
| ---------------------------------- | ------------------------------ | ----------------------------- | ---------------------------------------------------------- |
| `ghcr.io/germondai/trawl:latest`   | `apps/api/Dockerfile`          | Bun 1.4.2 (moderno, AVX2)     | Padrão compacto — fingerprints Linux                       |
| `ghcr.io/germondai/trawl:baseline` | `apps/api/Dockerfile.baseline` | Bun 1.4.2 baseline (sem AVX2) | CPUs mais antigas / kernels mais antigos (Synology NAS, J4125, era Atom) |

Todas as tags ficam no mesmo pacote `ghcr.io/germondai/trawl` — compartilham o registry, mas diferem na origem do Dockerfile ou nos argumentos de build. Escolha a tag que se adequa ao seu hardware e saída:```yaml
# Modern hardware (most users)
image: ghcr.io/germondai/trawl:latest

# Older CPUs without AVX2 / Synology / older kernels
image: ghcr.io/germondai/trawl:baseline

Nota do Synology: muitas unidades Synology NAS (DSM 7.x em J4125 / hardware mais antigo) vêm com kernel 4.4.x, que o runtime moderno do Bun não consegue lidar totalmente. O Bun padrão requer kernel 5.1+ (5.6+ recomendado); a build baseline degrada graciosamente até o kernel 3.10. A tag :baseline é publicada para esse caso — confirmado funcionando em um Synology DS920+ (Celeron J4125, DSM 7.3.2, kernel 4.4.302): o contêiner inicia limpo, /health reporta saudável, e ele resolve desafios Cloudflare ao vivo via /v1 (veja #1). Publicado por workflows independentes do GitHub Actions: fazer push de uma tag de release como v1.7.0 cria :1.7.0, :latest, :1.7.0-baseline, e :baseline; a build noturna diária às 02:00 UTC cria :nightly e :nightly-<dev-sha> a partir do commit mais recente de dev.

Releases & versionamento

TRAWL segue Semantic Versioning. Fazer push de uma tag git com prefixo v (ex. v1.0.0) dispara publish.yml, que constrói e faz push da tag Docker correspondente sem prefixo (ghcr.io/germondai/trawl:1.0.0) junto com :latest. A tag móvel :nightly e as tags imutáveis :nightly-<shortsha> são construídas a partir da revisão dev verificada mais recente todos os dias às 02:00 UTC ou em dispatch manual; pushes de branch não publicam imagens. Veja a página de Releases para o histórico completo de versões e CHANGELOG.md para o que mudou em cada uma.

Para publicar um commit passado específico que teve uma correção importante sem esperar pela próxima release do topo da main, marque esse SHA exato e faça push — publish.yml constrói a partir da ref da tag, não do topo atual da main:```bash git tag -a v1.0.1 -m "..." git push origin v1.0.1

root@kitploit:~
## Configuração

O TRAWL suporta proxies HTTP, proxies HTTP autenticados e proxies SOCKS5. Os arquivos Compose
padrão leem as configurações de proxy do arquivo `.env` local:```ini
# Optional Tier 3 datacenter proxy
PROXY_URL=http://user:[email protected]:8080

# Optional Tier 4 residential proxy
RESIDENTIAL_PROXY_URL=socks5://user:[email protected]:1080

| -s | --server | SERVER | http://localhost:8080 | URL do servidor | | -t | --token | TOKEN | | Token de autenticação | | -o | --output | OUTPUT | stdout | Arquivo de saída | | -f | --format | FORMAT | json | Formato de saída | | -v | --verbose | | | Saída detalhada | | -q | --quiet | | | Modo silencioso | | -h | --help | | | Exibir ajuda | | -V | --version | | | Exibir versão |

Exemplos

root@kitploit:~
# Iniciar o servidor
python -m kitploit.server --port 8080

# Executar uma verificação
python -m kitploit.scan --target example.com

# Exportar resultados
python -m kitploit.export --format json --output results.json

Desenvolvimento

Configuração

root@kitploit:~
# Clonar o repositório
git clone https://github.com/kitploit/kitploit.git
cd kitploit

# Criar ambiente virtual
python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

# Instalar dependências de desenvolvimento
pip install -r requirements-dev.txt

# Instalar hooks de pré-commit
pre-commit install

Testes

root@kitploit:~
# Executar todos os testes
pytest

# Executar com cobertura
pytest --cov=kitploit --cov-report=html

# Executar testes específicos
pytest tests/test_scanner.py -v

Linting

root@kitploit:~
# Executar linter
ruff check .

# Formatar código
ruff format .

# Verificação de tipos
mypy kitploit/

Contribuindo

  1. Faça um fork do repositório
  2. Crie uma branch de funcionalidade (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add amazing feature')
  4. Faça push para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Agradecimentos

  • Contribuidores
  • OpenAI
  • Anthropic

Suporte

  • 📧 Email: [email protected]
  • 💬 Discord: Entre no nosso servidor
  • 🐛 Issues: GitHub Issues

Aviso: Esta ferramenta destina-se apenas a testes de segurança autorizados e fins educacionais. Sempre obtenha permissão adequada antes de testar qualquer sistema.```bash docker compose up -d

root@kitploit:~
Deixe qualquer um dos valores vazio para desativar esse nível de proxy. Vários endpoints podem ser separados por
vírgulas; pools maiores podem usar a variável correspondente `*_LIST_FILE`. Consulte
[Configuration → Proxies](https://github.com/germondai/trawl/blob/dev/apps/docs/getting-started/configuration.md#proxies)
para exemplos de pool e de arquivo montado.

| Variável                         | Padrão                   | Descrição                                                                           |
| -------------------------------- | ------------------------ | ----------------------------------------------------------------------------------- |
| `BROWSER_POOL_SIZE`              | `1`                      | Instâncias Camoufox Firefox pré-aquecidas; aumente para resoluções de browser concorrentes |
| `LOG_LEVEL`                      | `info`                   | Logs operacionais: `error`, `warn`, `info`, `debug` ou `silent`                     |
| `METRICS_DASHBOARD_ENABLED`      | `false`                  | Ativa explicitamente o dashboard local sem token; vincula a porta a `127.0.0.1`    |
| `METRICS_DASHBOARD_TOKEN`        | —                        | Protege o dashboard, o endpoint JSON e o stream ao vivo com um token de 32+ caracteres |
| `METRICS_DB_PATH`                | `/data/metrics/trawl.sqlite` | Caminho SQLite para o histórico local de métricas (monte `/data/metrics` de forma persistente) |
| `BROWSER_ACQUIRE_TIMEOUT_MS`     | `15000`                  | Quanto tempo `acquire()` aguarda por um browser livre antes de retornar HTTP 429    |
| `BROWSER_RECYCLE_AFTER_CONTEXTS` | `8`                      | Substituição contínua após este número de contextos Tier 3/4; defina `0` para desativar |
| `BROWSER_MAX_CONTENT_PROCESSES`  | `2`                      | Limita os processos de conteúdo do Firefox por browser (`dom.ipc.processCount`); reduz RAM/CPU |
| `SCRAPE_MIN_TIER`                | `1`                      | Nível mais baixo permitido globalmente (`1` HTTP, `2` browser em cache, `3` novo, `4` residencial) |
| `SESSION_CACHE_DRIVER`           | `redis`                  | Backend do cache de sessão: `redis` ou `memory` de processo único                   |
| `REDIS_SESSION_TTL_SECONDS`      | `3600`                   | TTL da sessão em Redis ou em memória (segundos)                                     |
| `MEMORY_SESSION_CACHE_MAX_ENTRIES` | `1000`                 | Número máximo de entradas limitadas por LRU para o driver de memória                |
| `REDIS_URL`                      | —                        | String de conexão Redis; vazio ou não definido desativa o cache Redis               |
| `REDIS_CONNECT_TIMEOUT_MS`       | `5000`                   | Tempo máximo para cada tentativa de conexão Redis                                   |
| `REDIS_RETRY_DELAY_MS`           | `5000`                   | Atraso antes de reconectar após falha na inicialização; `0` desativa a nova tentativa |
| `SCRAPE_PROXY_SELECTION`         | `failover`               | Política do pool: `failover` fixo, `roundrobin` por requisição ou `random`          |
| `PROXY_URL`                      | —                        | Proxy HTTP ou SOCKS5 opcional de Tier 3, ou pool separado por vírgulas              |
| `PROXY_LIST_FILE`                | —                        | Arquivo contendo uma URL de proxy Tier 3 por linha                                  |
| `RESIDENTIAL_PROXY_URL`          | —                        | Ativa a escalada para proxy Tier 4                                                  |
| `RESIDENTIAL_PROXY_LIST_FILE`    | —                        | Arquivo contendo uma URL de proxy Tier 4 por linha                                  |
| `STT_URL`                        | —                        | Endpoint Whisper local para reCAPTCHA (opcional)                                    |
| `PORT`                           | `8191`                   | Porta de escuta da API                                                              |
| `MITM_ENABLED`                   | `false`                  | Ativa o proxy HTTP/HTTPS que contorna desafios                                      |
| `MITM_PORT`                      | `8192`                   | Porta de escuta do forward-proxy                                                    |
| `MITM_HOST`                      | `0.0.0.0`                | Endereço de bind; `127.0.0.1` para apenas loopback                                  |
| `MITM_CA_DIR`                    | `/data/proxy-ca`         | Diretório persistente do certificado raiz CA e da chave privada                     |
| `MITM_MAX_TIER`                  | `4`                      | Limita a escalada usada pelo proxy (ex.: `3` para permanecer fora do residencial)   |
| `MITM_ALWAYS_SCRAPE`             | `false`                  | Ignora o Tier 0 do proxy; desativa o caminho direto de streaming de mídia/arquivos grandes |
| `MITM_DEBUG`                     | `false`                  | Registra uma linha por requisição proxyficada (erros são sempre registrados)        |

Atualizar a partir de uma versão anterior exige renomear várias variáveis de ambiente. Consulte o
[guia de migração de configuração](https://github.com/germondai/trawl/blob/dev/apps/docs/deployment/configuration-migration.md) para o mapeamento completo
de antigo para novo e o comportamento de adesão ao Redis.

## Stack

Construído sobre uma stack moderna e rápida por padrão: Bun + Elysia para a API, Redis para cache,
Camoufox (Firefox reforçado) para automação de browser e Nuxt para a interface web — sem bagagem
legada de Node/Express.

| Camada        | Tecnologia                         |
| ------------- | ---------------------------------- |
| Runtime       | Bun                                |
| API           | Elysia                             |
| Browser       | Camoufox Firefox (via camoufox-js) |
| Cache de sessão | Redis 8.8                        |
| Landing page  | Nuxt 4                             |
| Documentação  | VitePress                          |

## Licença

[AGPL-3.0](https://github.com/germondai/trawl/blob/dev/LICENSE)

---

<p align="center">
    <span>Feito com ❤️ por</span>
    <a href="https://github.com/germondai" target="_blank">@germondai</a>
</p>
Baixar ferramenta

TRAWL40
Thordata Thordata - Proxies Residenciais Premium para Coleta de Dados.

A Thordata ajuda desenvolvedores a construir fluxos confiáveis de scraping, automação e dados de IA com IPs residenciais de alta qualidade.

🌍 Mais de 100M de IPs reais | Mais de 195 países
🔄 Sessões rotativas e fixas | Geolocalização precisa
⚡ Alta concorrência | Conexões estáveis

Reduza bloqueios e colete dados em escala com confiança.

🎁 Usuários do TRAWL:
• Teste gratuito de 3 dias + 10% de desconto Código: TRAWL10