
Scrap a maneira web para fácil
SCRAPPER não é um scraper — é um OBSERVADOR DE SESSÃO que captura os dados reais do seu navegador para uso em qualquer ferramenta de automação.
Construído sobre o BertUI React Framework
GitHub: BunElysiaReact/SCRAPY
Sem domínio. Sem nuvem. Tudo local. Tudo seu.

Toda ferramenta de automação web — Puppeteer, Playwright, Selenium, até curl — compartilha os mesmos desafios:
O verdadeiro problema: Todas essas ferramentas tentam imitar um humano. Mas elas estão adivinhando como um humano real se parece.
SCRAPPER não raspa. Ele fornece os dados REAIS de que VOCÊ precisa para raspar com sucesso.
VOCÊ SCRAPPER
│ │
├── Abra Brave/Chrome/Firefox com extensão ──────►│
│ │
├── Faça login nos sites que deseja automatizar ──►│ captura:
│ │ • Cookies
├── Navegue normalmente, clique em botões ────────►│ • Tokens
│ │ • Impressão digital
└── Termine de navegar ──────────────────────────►│ • Requisições de API
│ • Estrutura DOM
SEU SCRIPT ──── GET /api/v1/session/all ────► API SCRAPPER (localhost:8080)
◄── { cookies, tokens, fingerprint } ────────────────────────┘
│
▼
Puppeteer / Playwright / Selenium / Python requests / curl
│
▼
✅ Requisições autenticadas com SUA sessão real

Extensão SCRAPPER

Registrar Extensão

O script acima usou o SCRAPPER para capturar uma sessão real do claude.ai e depois enviou mensagens diretamente pela API — zero código de login, zero Puppeteer, zero automação de navegador.
📦 Dados da Sessão
├── 🍪 Cookies (incluindo HttpOnly, Secure, todos os domínios)
├── 💾 localStorage & sessionStorage
├── 🔑 Tokens de autenticação (Bearer, JWT, CSRF, personalizados)
└── 📨 Todos os cabeçalhos HTTP
🖥️ Impressão Digital do Navegador
├── 📱 User Agent
├── 🖼️ Resolução da tela e profundidade de cor
├── 🌍 Fuso horário e configurações de idioma
└── 📨 Conjunto completo de cabeçalhos (Accept, Accept-Language, etc.)
📡 Tráfego de Rede
├── 📤 Todas as requisições HTTP (URLs, métodos, cabeçalhos, dados POST)
├── 📥 Todas as respostas HTTP (status, cabeçalhos, corpos)
└── 🔄 Frames WebSocket
🌳 Estado do DOM
├── 📄 Instantâneos do DOM
├── 🎯 Teste de seletores ao vivo
└── 🗺️ Mapas DOM (todas as tags, classes, IDs)
Uma vez capturado, o SCRAPPER serve tudo através de uma simples API REST em http://localhost:8080.
curl -fsSL https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.sh | bash
# Passo 1 — Carregar extensão no Brave:
# brave://extensions → Modo desenvolvedor ATIVADO → Carregar expandida
# → selecione: ~/.scrapper/extension/brave/
# Passo 2 — Registrar seu ID de extensão
scrapper-register-ext SEU_ID_DE_EXTENSÃO
# Passo 3 — Iniciar SCRAPPER
scrapper-start
# Passo 4 — Abrir painel
# http://localhost:8080
# Clone o repositório
git clone https://github.com/BunElysiaReact/SCRAPY.git ~/scrapper
cd ~/scrapper
# Compile o host nativo C
gcc -O2 -o linux/c_core/native_host/debug_host linux/c_core/native_host/debug_host.c -lpthread
# Compile o motor de seletores Rust
cd linux/rust_finder && cargo build --release && cd ../..
# Inicie o servidor API
cd linux/python_api && python3 api.py
Abra http://localhost:8080 → Painel pronto.
irm https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.ps1 | iex
⚠️ Execute o PowerShell como Administrador para que o registro de mensagens nativas funcione corretamente.
%USERPROFILE%\.scrapper\
├── bin\
│ ├── debug_host.exe ← Host de mensagens nativas C
│ ├── scraper_cli.exe ← CLI cliente
│ ├── rust_finder.exe ← Motor rápido de seletores HTML
│ ├── scrapper-start.bat ← Iniciar tudo
│ └── scrapper-stop.bat ← Parar tudo
├── data\ ← Todos os dados de sessão capturados
├── logs\ ← Logs do host
├── python_api\
│ └── api.py ← Servidor da API REST
├── extension\
│ ├── brave\ ← Carregar no Brave / Chrome / Edge
│ └── firefox\ ← Carregar no Firefox
└── ui\scrapperui\ ← Código fonte do painel
brave://extensions ou chrome://extensions~/.scrapper/extension/brave/scrapper-register-ext SEU_IDIgual ao Brave/Chrome — Edge é baseado em Chromium, use a pasta extension/brave/.
about:debugging → Este Firefox~/.scrapper/extension/firefox/manifest.json⚠️ O Firefox captura cookies, cabeçalhos, localStorage — mas não corpos de requisição no nível CDP.
from curl_cffi import requests
API = "http://localhost:8080"
domain = "example.com"
cookies_raw = requests.get(f"{API}/api/v1/session/cookies?domain={domain}").json()
fp = requests.get(f"{API}/api/v1/fingerprint?domain={domain}").json()
session = requests.Session(impersonate="chrome120")
for c in cookies_raw:
session.cookies.set(c["name"], c["value"], domain=c.get("domain", domain).lstrip("."))
session.headers.update({"User-Agent": fp.get("userAgent", "")})
response = session.get(f"https://{domain}/api/data")
print(response.json())
import requests
session_data = requests.get('http://localhost:8080/api/v1/session/all').json()
s = requests.Session()
s.cookies.update({c['name']: c['value'] for c in session_data['cookies']})
s.headers.update({'User-Agent': session_data['fingerprint']['userAgent']})
response = s.get('https://api.example.com/data')
source <(curl -s http://localhost:8080/api/v1/export/env)
curl -X POST "https://api.example.com/upload" \
-H "Authorization: Bearer $SCRAPPER_BEARER_TOKEN" \
-b "$SCRAPPER_COOKIES" \
-F "[email protected]"
import requests
from playwright.async_api import async_playwright
session = requests.get('http://localhost:8080/api/v1/session/all').json()
async with async_playwright() as p:
context = await p.chromium.launch_persistent_context(
user_data_dir="./profile",
user_agent=session['fingerprint']['userAgent'],
)
await context.add_cookies(session['cookies'])
page = await context.new_page()
await page.goto('https://example.com')
const session = await fetch('http://localhost:8080/api/v1/session/all').then(r => r.json());
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCookie(...session.cookies);
await page.setUserAgent(session.fingerprint.userAgent);
await page.goto('https://example.com/dashboard');
Painel ao Vivo do SCRAPPER
Abra http://localhost:8080:
# Exportar dados de sessão mais recentes
curl -s "http://localhost:8080/api/v1/bulk/all?format=jsonl" > session.jsonl
# Usar em seu scraper
python3 my-scraper.py --session session.jsonl
# session_refresh.py — Pipeline de atualização semanal de sessão
import requests, schedule, time
def refresh_session():
notify_user("Por favor, faça login nos sites alvo em seu navegador")
time.sleep(300) # 5 minutos para o usuário navegar
data = requests.get('http://localhost:8080/api/v1/bulk/all?format=json').json()
with open(f'session_{int(time.time())}.json', 'w') as f:
import json; json.dump(data, f)
schedule.every().monday.at("09:00").do(refresh_session)
while True:
schedule.run_pending()
time.sleep(60)
SCRAPPER por BertUI — O Observador de Sessão para Automação Web
🔍 Assistindo seu navegador para que você não precise
⭐ Dê uma estrela no repositório se o SCRAPPER te ajudar — isso ajuda outros a encontrá-lo!
| Desafio | Por que é Difícil |
|---|
| Autenticação | Scriptar logins manualmente para cada site é tedioso e frágil |
| Estado da sessão | Cookies expiram, tokens rotacionam, localStorage é limpo |
| Engenharia reversa | Horas no DevTools entendendo padrões de API |
| Detecção de bots | Impressões digitais TLS, entropia do navegador, Cloudflare, hCaptcha |
| Complexidade de configuração | Lutando com navegadores headless, proxies e plugins furtivos |
| SCRAPPER É... | SCRAPPER NÃO É... |
|---|
| 🔍 Um observador de sessão que assiste SEU navegador real | ❌ Um substituto para Puppeteer/Playwright/Selenium |
| 💾 Uma ferramenta de captura de dados que salva sua sessão real | ❌ Uma ferramenta que raspa sites para você |
| 📡 Um servidor de API local servindo seus dados capturados | ❌ Um serviço hospedado ou plataforma em nuvem |
| 🧠 Um assistente de engenharia reversa revelando APIs ocultas | ❌ Um botão mágico "raspe qualquer coisa" |
| 🎯 Um depurador visual para entender a estrutura do site | ❌ Um construtor de automação sem código |
| Vantagem | Por que Importa |
|---|
| Contorna Detecção Avançada de Bots | Usa curl_cffi para personificar a impressão digital TLS de um navegador real (ex.: Chrome 120) — não é sinalizado como automatizado |
| Taxa de Sucesso de 97% | Mira rotas internas de API, não a interface visual — imune a mudanças de CSS, botões móveis ou alterações de layout |
| Baixo Uso de Recursos | ~20MB de RAM vs 500MB+ para Puppeteer/Selenium. Sem mecanismo de navegador rodando |
| Autenticação Invisível | Aproveita sua sessão existente verificada por humano — sem fluxo de login, sem CAPTCHAs |
| Sincroniza com o Navegador Real | Mensagens/ações de scripts aparecem na sua aba real do navegador quando você atualiza |
| Agnóstico de Linguagem | A API da sessão funciona com Python, Go, Rust, Node, curl — qualquer coisa que possa fazer requisições HTTP |
| Desvantagem | O Que Significa |
|---|
| Vida Útil Frágil da Sessão | Totalmente dependente de uma sessão ativa do navegador — expira se você sair |
| Depende de APIs Internas | Usa endpoints não documentados que podem mudar sem aviso |
| Requer Infraestrutura de Configuração | Não é autônomo — precisa de host nativo + extensão do navegador rodando simultaneamente |
| Risco de Conta | Usa sua identidade real. Atingir limites de taxa agressivamente pode banir sua conta real |
| Curva de Aprendizado | É necessário ler o tráfego de rede para entender os payloads corretos da API |
| Vinculação a um Único Dispositivo | device-id está vinculado a uma sessão capturada — não pode ser facilmente compartilhado entre máquinas |
| Endpoint | Descrição |
|---|
GET /api/v1/session/cookies?domain=example.com | Todos os cookies de um domínio |
GET /api/v1/session/localstorage?domain=example.com | Dados de localStorage |
GET /api/v1/session/all | Despejo completo da sessão |
GET /api/v1/fingerprint | Impressão digital do navegador |
GET /api/v1/tokens/all | Todos os tokens extraídos |
GET /api/v1/requests/recent?limit=50 | Requisições de rede recentes |
GET /api/v1/dom/snapshot?url=example.com | Instantâneo do DOM |
GET /api/v1/export/env | Formato de variáveis de ambiente |
GET /api/v1/bulk/all?format=[json|jsonl|har|csv|txt] | Tudo, no seu formato |
| Aba | O Que Faz |
|---|
| Ao Vivo | Fluxo em tempo real de todos os eventos de rede capturados |
| Corpos | Corpos de respostas HTTP — JSON, HTML, SVG, imagens, com pré-visualização |
| Respostas | Todas as respostas HTTP por domínio, filtráveis por bandeiras |
| Intel | Resumo por domínio — tokens, cookies, endpoints, mapa DOM |
| Tokens | Tokens Bearer, tokens de tarefa, cookies de autenticação, trechos curl |
| Endpoints | Todos os endpoints de API descobertos com "Copiar para LLM" |
| Mapa DOM | Árvore completa de tags/classes/IDs — clique em qualquer item para raspar automaticamente |
| Encontrar | Teste seletores CSS contra HTML real renderizado |
| Navegar | Navegar + rastrear abas, despejar cookies, capturar HTML |
| Fila | Processar em lote listas de URLs com atrasos configuráveis |
| Área | O Que é Necessário |
|---|
| Testes | Teste o SCRAPPER em diferentes sites, reporte bugs |
| Firefox | Ajude a melhorar as soluções alternativas de CDP na extensão do Firefox |
| Windows | Teste casos extremos do instalador do Windows |
| Documentação | Escreva tutoriais para sites ou casos de uso específicos |
| Código | PRs bem-vindos — especialmente correções de bugs |