Files
navegator/docs/BINARIOS.md
T
Developer 3253828fef
Tests / Lint (push) Has been cancelled
Tests / Unit Tests (push) Has been cancelled
Tests / E2E Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Initial commit: navegator - Chrome CDP automation for LLMs
Add complete navegator system for stealthy browser automation:
- CDP client with WebSocket communication
- Browser API with navigation, storage, network, runtime
- Stealth flags and anti-detection scripts
- Persistent profile support
- Examples and comprehensive documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-24 23:33:07 +01:00

397 lines
8.9 KiB
Markdown

# Binarios de Automatización - Navegator
Herramientas CLI standalone para automatizar navegación web.
## 🎯 Características Principales
**Perfiles Personalizables**: Cada binario puede usar cualquier perfil
**Cookies Separadas**: Simula usuarios diferentes sin conflictos
**Sin Dependencias**: Solo el binario ejecutable
**Output Estructurado**: JSON, PNG, logs
**Stealth Completo**: Flags anti-detección incluidas
---
## 📦 Binarios Disponibles
### 1. `screenshot` - Captura de Pantalla
Captura screenshots de cualquier página web.
```bash
# Compilar
go build -o screenshot cmd/screenshot.go
# Uso básico
./screenshot -url https://example.com
# Con perfil específico
./screenshot -url https://github.com -profile mi-usuario -o github.png
# Página completa, modo visible
./screenshot -url https://news.ycombinator.com -full=true -headless=false
# Resolución personalizada
./screenshot -url https://google.com -width=1920 -height=1080 -o google_hd.png
```
**Parámetros:**
- `-url` (requerido): URL a capturar
- `-profile` (default: screenshot-bot): Perfil de navegador
- `-o` (default: screenshot.png): Archivo de salida
- `-headless` (default: true): Modo headless
- `-full` (default: false): Captura página completa
- `-width` (default: 1280): Ancho de ventana
- `-height` (default: 720): Alto de ventana
---
### 2. `buscar` - Motor de Búsqueda
Busca en DuckDuckGo y extrae resultados estructurados.
```bash
# Compilar
go build -o buscar cmd/buscar.go
# Uso básico
./buscar -q "golang tutorial"
# Con perfil y más resultados
./buscar -q "python web scraping" -n 20 -profile researcher-bot
# Guardar en JSON
./buscar -q "nodejs frameworks" -output resultados.json
# Modo visible para debugging
./buscar -q "react hooks" -headless=false -profile dev-session
```
**Parámetros:**
- `-q` (requerido): Consulta de búsqueda
- `-profile` (default: search-bot): Perfil de navegador
- `-n` (default: 10): Número máximo de resultados
- `-output` (opcional): Guardar resultados en JSON
- `-headless` (default: true): Modo headless
**Output JSON:**
```json
[
{
"titulo": "Tutorial de Golang",
"url": "https://...",
"descripcion": "Aprende Go desde cero..."
}
]
```
---
### 3. `navegar` - Navegación Interactiva
Navega a URLs, interactúa con elementos, y registra acciones.
```bash
# Compilar
go build -o navegar cmd/navegar.go
# Navegación simple
./navegar -url https://example.com -profile usuario1
# Con click en elemento
./navegar -url https://github.com -click "a[href='/explore']" -profile dev1
# Llenar formulario
./navegar -url https://httpbin.org/forms/post \
-type "input[name='custname']" \
-text "Juan Pérez" \
-profile test-user
# Mantener abierto más tiempo
./navegar -url https://reddit.com -duration 30 -headless=false -profile lurker
# Sesión completa con recording
./navegar -url https://example.com \
-profile session-abc \
-click "button.primary" \
-duration 15
```
**Parámetros:**
- `-url` (requerido): URL a visitar
- `-profile` (default: user-default): Perfil de navegador
- `-click` (opcional): Selector CSS para hacer click
- `-type` (opcional): Selector CSS donde escribir
- `-text` (opcional): Texto a escribir (requiere -type)
- `-headless` (default: false): Modo headless
- `-duration` (default: 10): Segundos que mantener abierto
**Genera:** `recording_<profile>.log` con todas las acciones
---
## 🎭 Simulación de Usuarios Orgánicos
### Concepto de Perfiles
Cada perfil es un **usuario virtual independiente**:
```
perfiles/
├── usuario-juan/ # Juan - desarrollador
├── usuario-maria/ # Maria - diseñadora
├── bot-research-1/ # Bot de investigación #1
├── bot-research-2/ # Bot de investigación #2
└── session-temp/ # Sesión temporal
```
Cada perfil mantiene:
- ✅ Cookies propias
- ✅ LocalStorage separado
- ✅ Historial independiente
- ✅ Cache aislado
- ✅ User-Agent persistente
### Ejemplo: Múltiples Usuarios
```bash
# Usuario 1: Busca tutoriales de Go
./buscar -q "golang tutorial" -profile dev-juan -n 10
# Usuario 2: Busca Python
./buscar -q "python basics" -profile student-maria -n 15
# Usuario 3: Captura diseños
./screenshot -url https://dribbble.com -profile designer-pedro
# Reutilizar perfil de Juan (tiene sus cookies)
./navegar -url https://github.com -profile dev-juan
```
### Script de Demostración
```bash
./ejemplos_perfiles.sh
```
Simula 3 usuarios diferentes navegando automáticamente.
---
## 🔄 Casos de Uso
### 1. Monitoreo Multi-Cuenta
```bash
# Revisar 5 cuentas diferentes
for i in {1..5}; do
./navegar -url https://miapp.com/dashboard \
-profile account-$i \
-duration 5
done
```
### 2. A/B Testing
```bash
# Probar con diferentes perfiles (cookies diferentes)
./screenshot -url https://miapp.com -profile user-a -o version-a.png
./screenshot -url https://miapp.com -profile user-b -o version-b.png
```
### 3. Scraping Distribuido
```bash
# Buscar desde múltiples "usuarios"
./buscar -q "keyword1" -profile bot-1 -output bot1.json &
./buscar -q "keyword2" -profile bot-2 -output bot2.json &
./buscar -q "keyword3" -profile bot-3 -output bot3.json &
wait
```
### 4. Testing de Sesiones
```bash
# Login con usuario A
./navegar -url https://app.com/login \
-type "#username" -text "userA" \
-profile session-a
# Verificar que usuario B no tiene acceso
./navegar -url https://app.com/dashboard \
-profile session-b
```
---
## 🐍 Integración con Python
```python
import subprocess
import json
# Buscar desde Python con perfil específico
result = subprocess.run([
'./buscar',
'-q', 'python tutorial',
'-n', '10',
'-profile', 'python-bot',
'-output', 'temp.json'
], capture_output=True, text=True)
# Parsear resultados
with open('temp.json') as f:
results = json.load(f)
for r in results:
print(f"{r['titulo']}: {r['url']}")
# Screenshot con perfil rotativo
profiles = ['user1', 'user2', 'user3']
for i, profile in enumerate(profiles):
subprocess.run([
'./screenshot',
'-url', 'https://example.com',
'-profile', profile,
'-o', f'capture_{i}.png'
])
```
---
## 🛡️ Stealth y Anti-Detección
Todos los binarios incluyen automáticamente:
`navigator.webdriver = false`
✅ Sin banners de "controlado por automatización"
✅ Headers realistas
✅ Timing humano en Type
✅ User-Agent personalizable
✅ Sin extensiones sospechosas
Para máximo stealth:
```bash
# Usar modo visible (menos detectable)
./navegar -url https://sitio-estricto.com -headless=false -profile real-user
# Mantener sesión larga (más orgánico)
./navegar -url https://ejemplo.com -duration 60 -profile organic-session
```
---
## 📝 Logs y Debugging
Cada binario genera logs:
```bash
# buscar y navegar generan logs automáticos
./navegar -url https://example.com -profile test1
# Crea: recording_test1.log
# Ver log
cat recording_test1.log
```
Formato del log:
```json
{"timestamp":"...","type":"Navigate","params":{"url":"..."}}
# 22:49:11 - Navigate: https://example.com
{"timestamp":"...","type":"Click","params":{"selector":"button"}}
# 22:49:12 - Click: button
```
---
## 🚀 Performance
**Headless vs Visible:**
- Headless: Más rápido, menos memoria
- Visible: Más sigiloso, debugging más fácil
**Perfiles:**
- Primer uso: ~2-3 segundos (crea perfil)
- Usos siguientes: ~1 segundo (reutiliza)
**Limitar perfiles:**
```bash
# Limpiar perfiles viejos
rm -rf perfiles/temp-*
rm -rf perfiles/bot-old-*
```
---
## 💡 Tips
1. **Nombres descriptivos de perfiles:**
```bash
./buscar -q "query" -profile "research-$(date +%Y%m%d)"
```
2. **Rotación automática:**
```bash
PROFILE="user-$RANDOM"
./screenshot -url https://example.com -profile "$PROFILE"
```
3. **Perfiles temporales:**
```bash
./navegar -url https://test.com -profile "temp-$$"
rm -rf perfiles/temp-* # Limpiar después
```
4. **Compartir perfil entre binarios:**
```bash
# Misma sesión, diferentes tools
./navegar -url https://github.com -profile dev-session
./screenshot -url https://github.com/trending -profile dev-session
# Ambos comparten las mismas cookies!
```
---
## 🔧 Compilar Todos
```bash
# Compilar todos los binarios
go build -o screenshot cmd/screenshot.go
go build -o buscar cmd/buscar.go
go build -o navegar cmd/navegar.go
# O con un script
for cmd in cmd/*.go; do
name=$(basename "$cmd" .go)
go build -o "$name" "$cmd"
echo "✅ $name compilado"
done
```
---
## 📚 Crear Tus Propios Binarios
Usa el patrón de `cmd/*.go`:
```go
package main
import (
"flag"
"navegator/pkg/browser"
)
func main() {
url := flag.String("url", "", "URL")
profile := flag.String("profile", "mi-bot", "Perfil")
flag.Parse()
config := browser.DefaultConfig()
config.ProfileName = *profile
// ... tu lógica
}
```
Ventajas:
- ✅ Cada binario es independiente
- ✅ Fácil de distribuir
- ✅ Parámetros CLI estándar
- ✅ Perfiles automáticos