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>
93 lines
2.2 KiB
Go
93 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"navegator/pkg/browser"
|
|
)
|
|
|
|
func main() {
|
|
ctx := context.Background()
|
|
|
|
// Crear configuración con perfil personalizado
|
|
config := browser.DefaultConfig()
|
|
config.ProfileName = "my-agent-profile"
|
|
|
|
// Si quieres modo visible, desactiva headless
|
|
// config.StealthFlags.Headless = false
|
|
|
|
// Lanzar navegador
|
|
log.Println("Lanzando navegador...")
|
|
b, err := browser.Launch(ctx, config)
|
|
if err != nil {
|
|
log.Fatalf("Error al lanzar navegador: %v", err)
|
|
}
|
|
defer b.Close()
|
|
|
|
log.Printf("Navegador iniciado. Perfil: %s\n", b.ProfilePath())
|
|
log.Printf("Debug URL: %s\n", b.DebugURL())
|
|
|
|
// Navegar a una página
|
|
log.Println("Navegando a example.com...")
|
|
if err := b.Navigate(ctx, "https://example.com", nil); err != nil {
|
|
log.Fatalf("Error al navegar: %v", err)
|
|
}
|
|
|
|
// Esperar un poco para que cargue
|
|
time.Sleep(2 * time.Second)
|
|
|
|
// Obtener HTML
|
|
log.Println("Obteniendo HTML...")
|
|
html, err := b.GetHTML(ctx, "")
|
|
if err != nil {
|
|
log.Fatalf("Error al obtener HTML: %v", err)
|
|
}
|
|
log.Printf("HTML length: %d bytes\n", len(html))
|
|
|
|
// Obtener texto del h1
|
|
log.Println("Obteniendo texto del h1...")
|
|
text, err := b.GetText(ctx, "h1")
|
|
if err != nil {
|
|
log.Fatalf("Error al obtener texto: %v", err)
|
|
}
|
|
log.Printf("H1 text: %s\n", text)
|
|
|
|
// Tomar screenshot
|
|
log.Println("Tomando screenshot...")
|
|
screenshot, err := b.Screenshot(ctx, false)
|
|
if err != nil {
|
|
log.Fatalf("Error al tomar screenshot: %v", err)
|
|
}
|
|
|
|
if err := os.WriteFile("screenshot.png", screenshot, 0644); err != nil {
|
|
log.Fatalf("Error al guardar screenshot: %v", err)
|
|
}
|
|
log.Println("Screenshot guardado en screenshot.png")
|
|
|
|
// Ejecutar JavaScript
|
|
log.Println("Ejecutando JavaScript...")
|
|
result, err := b.Evaluate(ctx, "window.location.href")
|
|
if err != nil {
|
|
log.Fatalf("Error al ejecutar JavaScript: %v", err)
|
|
}
|
|
log.Printf("Current URL: %v\n", result.Value)
|
|
|
|
// Cookies
|
|
log.Println("Obteniendo cookies...")
|
|
cookies, err := b.GetCookies(ctx)
|
|
if err != nil {
|
|
log.Fatalf("Error al obtener cookies: %v", err)
|
|
}
|
|
log.Printf("Cookies encontradas: %d\n", len(cookies))
|
|
|
|
for _, cookie := range cookies {
|
|
log.Printf(" - %s = %s\n", cookie.Name, cookie.Value)
|
|
}
|
|
|
|
log.Println("Ejemplo completado exitosamente!")
|
|
}
|