Initial commit: navegator - Chrome CDP automation for LLMs
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

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>
This commit is contained in:
Developer
2026-03-24 23:33:07 +01:00
commit 3253828fef
36 changed files with 8116 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
#!/bin/bash
# Script para clonar perfiles y usarlos en paralelo
if [ -z "$1" ] || [ -z "$2" ]; then
echo "Uso: $0 <perfil-origen> <perfil-destino>"
echo ""
echo "Ejemplo:"
echo " $0 usuario-base usuario-clon-1"
echo ""
echo "Esto permite usar el mismo perfil en paralelo:"
echo " ./buscar -q 'golang' -profile usuario-clon-1 &"
echo " ./buscar -q 'python' -profile usuario-clon-2 &"
exit 1
fi
ORIGEN="$1"
DESTINO="$2"
PROFILES_DIR="${3:-$HOME/.navegator/profiles}"
ORIGEN_PATH="$PROFILES_DIR/$ORIGEN"
DESTINO_PATH="$PROFILES_DIR/$DESTINO"
# Verificar que origen existe
if [ ! -d "$ORIGEN_PATH" ]; then
echo "❌ Error: El perfil '$ORIGEN' no existe en $PROFILES_DIR"
exit 1
fi
# Verificar que destino no existe
if [ -d "$DESTINO_PATH" ]; then
echo "⚠️ El perfil '$DESTINO' ya existe. ¿Sobrescribir? (y/N)"
read -r respuesta
if [ "$respuesta" != "y" ] && [ "$respuesta" != "Y" ]; then
echo "Cancelado."
exit 0
fi
rm -rf "$DESTINO_PATH"
fi
# Copiar perfil
echo "📋 Clonando perfil..."
cp -r "$ORIGEN_PATH" "$DESTINO_PATH"
# Limpiar archivos de lock y sesión
echo "🧹 Limpiando locks..."
rm -f "$DESTINO_PATH/SingletonLock"
rm -f "$DESTINO_PATH/SingletonSocket"
rm -f "$DESTINO_PATH/SingletonCookie"
rm -f "$DESTINO_PATH/DevToolsActivePort"
echo "✅ Perfil clonado: $ORIGEN$DESTINO"
echo ""
echo "Ahora puedes usar ambos en paralelo:"
echo " ./buscar -q 'query1' -profile $ORIGEN &"
echo " ./buscar -q 'query2' -profile $DESTINO &"
+104
View File
@@ -0,0 +1,104 @@
#!/bin/bash
# Demostración de uso de perfiles en paralelo
echo "=========================================="
echo "🎭 Demo: Perfiles en Paralelo"
echo "=========================================="
echo ""
# Verificar que los binarios existen
if [ ! -f "./buscar" ] || [ ! -f "./screenshot" ]; then
echo "❌ Error: Binarios no encontrados"
echo "Ejecuta: go build -o buscar cmd/buscar.go"
exit 1
fi
# Crear perfil base
echo "📝 Paso 1: Crear perfil base"
echo "---"
PROFILES_DIR="$HOME/.navegator/profiles"
mkdir -p "$PROFILES_DIR/demo-base"
echo "✅ Perfil base creado: demo-base"
echo ""
# Clonar perfiles
echo "📋 Paso 2: Clonar perfiles para uso paralelo"
echo "---"
for i in {1..3}; do
if [ -d "$PROFILES_DIR/demo-worker-$i" ]; then
rm -rf "$PROFILES_DIR/demo-worker-$i"
fi
cp -r "$PROFILES_DIR/demo-base" "$PROFILES_DIR/demo-worker-$i"
# Limpiar locks
rm -f "$PROFILES_DIR/demo-worker-$i/SingletonLock"
rm -f "$PROFILES_DIR/demo-worker-$i/SingletonSocket"
rm -f "$PROFILES_DIR/demo-worker-$i/SingletonCookie"
echo "✅ Clonado: demo-worker-$i"
done
echo ""
# Ejecutar en paralelo
echo "🚀 Paso 3: Ejecutar búsquedas en paralelo"
echo "---"
echo "Iniciando 3 búsquedas simultáneas..."
echo ""
./bin/buscar -q "golang tutorial" -n 3 -profile demo-worker-1 -output demo-result-1.json &
PID1=$!
echo "Worker 1 (PID $PID1): Buscando 'golang tutorial'"
./bin/buscar -q "python basics" -n 3 -profile demo-worker-2 -output demo-result-2.json &
PID2=$!
echo "Worker 2 (PID $PID2): Buscando 'python basics'"
./bin/buscar -q "javascript async" -n 3 -profile demo-worker-3 -output demo-result-3.json &
PID3=$!
echo "Worker 3 (PID $PID3): Buscando 'javascript async'"
echo ""
echo "⏳ Esperando que terminen las búsquedas..."
wait
echo ""
echo "=========================================="
echo "✅ Demo completada"
echo "=========================================="
echo ""
# Mostrar resultados
echo "📊 Resultados generados:"
ls -lh demo-result-*.json 2>/dev/null | awk '{print " "$9" ("$5")"}'
echo ""
echo "📂 Perfiles usados simultáneamente:"
for i in {1..3}; do
if [ -d "$PROFILES_DIR/demo-worker-$i" ]; then
size=$(du -sh "$PROFILES_DIR/demo-worker-$i" | cut -f1)
echo " demo-worker-$i ($size)"
fi
done
echo ""
echo "💡 Conclusión:"
echo " - 3 búsquedas ejecutadas EN PARALELO"
echo " - Cada una con su propio perfil (cookies aisladas)"
echo " - Sin conflictos ni errores de lock"
echo " - Resultados guardados en JSON separados"
echo ""
echo "🧹 Limpiar archivos de demo? (y/N)"
read -r respuesta
if [ "$respuesta" = "y" ] || [ "$respuesta" = "Y" ]; then
rm -f demo-result-*.json
rm -rf "$PROFILES_DIR/demo-worker-"*
rm -rf "$PROFILES_DIR/demo-base"
echo "✅ Demo limpiada"
else
echo "Archivos conservados en:"
echo " - Resultados: demo-result-*.json"
echo " - Perfiles: $PROFILES_DIR/demo-worker-*"
fi
echo ""
echo "📖 Más info: cat PERFILES_AVANZADO.md"
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# Script de demostración: Simulación de múltiples usuarios navegando
echo "=========================================="
echo "🎭 Simulación de Navegación Orgánica"
echo "=========================================="
echo ""
echo "Este script simula 3 usuarios diferentes navegando"
echo "Cada uno usa su propio perfil con cookies separadas"
echo ""
# Usuario 1: Desarrollador buscando info técnica
echo "👨‍💻 Usuario 1: Desarrollador"
echo " - Perfil: dev-user-1"
echo " - Busca: golang tutorials"
echo ""
./bin/buscar -q "golang tutorials" -n 5 -profile dev-user-1 -headless=true -output dev1_results.json
echo ""
# Usuario 2: Estudiante haciendo research
echo "👩‍🎓 Usuario 2: Estudiante"
echo " - Perfil: student-user-2"
echo " - Busca: machine learning basics"
echo ""
./bin/buscar -q "machine learning basics" -n 5 -profile student-user-2 -headless=true -output student2_results.json
echo ""
# Usuario 3: Diseñador buscando inspiración
echo "🎨 Usuario 3: Diseñador"
echo " - Perfil: designer-user-3"
echo " - Captura: dribbble.com"
echo ""
./bin/screenshot -url https://dribbble.com -profile designer-user-3 -o designer3_capture.png -headless=true
echo ""
echo "=========================================="
echo "✅ Simulación completada"
echo ""
echo "📂 Perfiles creados:"
ls -1 perfiles/ | grep -E "dev-user|student-user|designer-user"
echo ""
echo "📊 Archivos generados:"
ls -lh *_results.json *_capture.png 2>/dev/null | awk '{print " "$9" ("$5")"}'
echo ""
echo "💡 Cada perfil mantiene:"
echo " - Cookies separadas"
echo " - Historial independiente"
echo " - Cache propio"
echo " - Sesiones aisladas"
echo ""
echo "🔄 Para reutilizar un perfil:"
echo " ./navegar -url https://example.com -profile dev-user-1"
echo ""