3253828fef
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>
105 lines
2.9 KiB
Bash
Executable File
105 lines
2.9 KiB
Bash
Executable File
#!/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"
|