Dados & API
Estrutura dos dados extraídos e formato dos arquivos JSON gerados pelo scraper.
Estrutura de Arquivos
output/br4.bet.br/
├── data/
│ ├── user-profile.json # Dados do perfil do usuário
│ ├── missions.json # Lista completa de missões
│ ├── shop.json # Itens disponíveis na loja
│ └── levels.json # Sistema de níveis e tiers
├── images/
│ └── ui/
│ ├── vip-main.png # Tela principal VIP
│ ├── missions.png # Tela de missões
│ └── shop.png # Tela da loja
└── docs/
├── gamification.md # Documentação principal
└── security-report.md # Relatório de segurança
user-profile.json
Dados do perfil do usuário logado.
{
"site": "br4.bet.br",
"scrapedAt": "2026-08-15T13:18:00.000Z",
"user": {
"name": "PEDRO PAULO COELHO VALADAO",
"level": 8,
"tier": "Bronze",
"coins": 1000,
"points": 1000,
"pointsToNextLevel": 80,
"nextLevel": 9,
"nextTier": "Bronze",
"progress": 93
}
}
levels.json
Estrutura completa do sistema de níveis e tiers.
{
"site": "br4.bet.br",
"scrapedAt": "2026-08-15T13:18:00.000Z",
"tiers": [
{
"name": "Aprendiz",
"levels": [0],
"color": "#808080",
"benefits": ["Acesso básico ao sistema"]
},
{
"name": "Bronze",
"levels": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"color": "#CD7F32",
"benefits": ["Cashback básico", "Acesso a missões", "Compras na loja"]
},
// ... mais tiers
],
"currentUser": {
"level": 8,
"tier": "Bronze",
"points": 1000,
"pointsToNextLevel": 80,
"progress": 93
}
}
missions.json
Lista completa de missões disponíveis.
{
"site": "br4.bet.br",
"scrapedAt": "2026-08-15T13:18:00.000Z",
"summary": {
"total": 49,
"available": 48,
"blocked": 0,
"completed": 1,
"expired": 0
},
"missions": [
{
"id": "compre-25-itens",
"name": "Compre 25 itens",
"description": "Compre 25 itens! Sua tarefa: Adquira 25 itens na loja.",
"reward": "3000 moedas",
"status": "available",
"progress": 0,
"category": "loja"
},
{
"id": "pg-pragmatic-diario-1",
"name": "PG E PRAGMATIC DIÁRIO - Nível 1",
"description": "Aposte R$250,00 em jogos Pragmatic Play ou PG Soft",
"reward": "5 Giros Grátis no Fortune Tiger",
"status": "available",
"progress": 0,
"category": "aposta-diaria",
"requirements": {
"minVolume": 250,
"balanceType": "Saldo Real",
"providers": ["Pragmatic Play", "PG Soft"]
}
}
// ... mais missões
]
}
shop.json
Itens disponíveis na loja para troca por pontos.
{
"site": "br4.bet.br",
"scrapedAt": "2026-08-15T13:18:00.000Z",
"currency": "pts (pontos/moedas)",
"items": [
{
"id": "tigre-sortudo-5giros",
"name": "5 giros no Tigre Sortudo",
"game": "Tigre Sortudo",
"provider": "Pragmatic Play",
"spins": 5,
"price": 1900,
"status": "available"
},
{
"id": "ratinho-sortudo-5giros",
"name": "5 giros no Ratinho Sortudo",
"game": "Ratinho Sortudo",
"provider": "Pragmatic Play",
"spins": 5,
"price": 1900,
"status": "available"
},
{
"id": "gates-olympus-5giros",
"name": "5 giros no Gates of Olympus 1000",
"game": "Gates of Olympus 1000",
"provider": "Pragmatic Play",
"spins": 5,
"price": 4000,
"status": "available"
}
]
}
WebSocket Events
Eventos capturados via WebSocket para atualizações em tempo real.
Canal Privado
private-encrypted-{userId}
Eventos
| Evento | Descrição |
|---|---|
UserUpdateEvent | Mudanças de perfil/saldo |
UserTransactionEvent | Depósitos/saques |
UserRolloverUpdateEvent | Progresso wagering |
notificationCreatedEvent | Notificações |
Smartico CIDs
| CID | Comando |
|---|---|
| 502 | CLIENT_TRACK_ACTIVITY_REQUEST |
| 509/510 | Store items |
| 526 | MISSION_OPTIN_RESPONSE |
| 527/528 | Balance query/response |
| 540 | ACHIEVEMENT_CLAIM_PRIZE_RESPONSE |
| 706 | SAW_SPINS_COUNT_PUSH |
| 808 | JP_WIN_PUSH |
Scraper
O scraper usa Playwright para extrair os dados da plataforma.
Executar
npm run scrape
Dependências
- playwright ^1.52.0
- typescript ^5.8.0
- ts-node ^10.9.0