Files
navegator/dev/issues/completed/003-gestion-cookies-perfil.md
T
Developer c165f2f788 docs: issues técnicas para nuevas funcionalidades
Agrega 19 issues técnicas documentando funcionalidades implementadas y pendientes.

Issues completadas (movidas a dev/issues/completed/):
- 001-conversor-web-markdown.md
- 002-accessibility-tree.md
- 003-gestion-cookies-perfil.md
- 004-gestion-extensiones-chrome.md
- 005-eliminar-timeouts-innecesarios.md

Issues implementadas:
- 006-manejo-tabs-ventanas.md
- 016-manejo-iframes.md
- 017-actions-api.md
- 018-file-uploads.md
- 019-expected-conditions-mejoradas.md

Issues pendientes (media prioridad):
- 007-alert-prompt-confirm-handling.md
- 008-screenshot-elementos-especificos.md
- 009-pdf-generation.md
- 010-device-emulation-completo.md
- 011-downloads-handling.md

Issues pendientes (baja prioridad / avanzado):
- 012-browser-contexts-multi-sesion.md
- 013-video-recording.md
- 014-network-mocking-avanzado.md
- 015-geolocation-permissions.md

Incluye también dev/NUEVAS_FUNCIONALIDADES.md con resumen completo.

Directorio: dev/
2026-03-25 00:49:06 +01:00

5.7 KiB

Issue #003: Administración avanzada de cookies del perfil

Tipo: Enhancement Prioridad: Media Estado: Pendiente

Descripción

Mejorar las capacidades de gestión de cookies persistentes en perfiles de navegador, permitiendo importar/exportar y gestionar cookies antes y después del lanzamiento del navegador.

Funcionalidad deseada

Gestión de cookies en runtime (ya implementado parcialmente)

  • GetCookies() - Obtener cookies de URLs específicas
  • SetCookie() - Establecer cookies individuales
  • ClearCookies() - Limpiar todas las cookies

Nuevas funcionalidades necesarias

Importar/Exportar

  • Exportar todas las cookies del perfil a archivo JSON
  • Importar cookies desde archivo JSON
  • Formato compatible con extensiones de Chrome (EditThisCookie, etc.)
  • Soportar formato Netscape (cookies.txt)

Gestión offline de perfiles

  • Leer cookies del perfil sin lanzar navegador
  • Modificar cookies del perfil en disco
  • Copiar cookies entre perfiles
  • Backup/restore de cookies

Filtrado y búsqueda

  • Listar todas las cookies del perfil actual
  • Filtrar cookies por dominio
  • Filtrar cookies por nombre
  • Buscar cookies por patrón

Configuración previa al lanzamiento

  • Establecer cookies iniciales antes de lanzar navegador
  • Cargar cookies desde archivo al inicio
  • Configurar cookies de sesión específicas

Implementación técnica

Archivos sugeridos

  • pkg/browser/profile_cookies.go - Gestión avanzada
  • pkg/browser/cookie_import_export.go - I/O de archivos

API propuesta

// === Gestión en runtime ===

// GetAllCookies obtiene todas las cookies del navegador actual
func (b *Browser) GetAllCookies(ctx context.Context) ([]*Cookie, error)

// FilterCookies obtiene cookies que coinciden con filtros
func (b *Browser) FilterCookies(ctx context.Context, filter CookieFilter) ([]*Cookie, error)

type CookieFilter struct {
    Domain  string // Filtrar por dominio (ej: ".example.com")
    Name    string // Filtrar por nombre exacto
    Pattern string // Regex para nombre o valor
}

// === Import/Export ===

// ExportCookies exporta cookies a archivo JSON
func (b *Browser) ExportCookies(ctx context.Context, filepath string, format CookieFormat) error

// ImportCookies importa cookies desde archivo
func (b *Browser) ImportCookies(ctx context.Context, filepath string, format CookieFormat) error

type CookieFormat string
const (
    CookieFormatJSON     CookieFormat = "json"     // JSON estándar
    CookieFormatNetscape CookieFormat = "netscape" // cookies.txt
    CookieFormatChrome   CookieFormat = "chrome"   // Formato EditThisCookie
)

// === Gestión offline de perfiles ===

// Profile representa un perfil de navegador
type Profile struct {
    Name string
    Path string
}

// ListProfiles lista todos los perfiles disponibles
func ListProfiles() ([]Profile, error)

// GetProfileCookies lee cookies de un perfil sin lanzar navegador
func GetProfileCookies(profilePath string) ([]*Cookie, error)

// SetProfileCookies escribe cookies en un perfil sin lanzar navegador
func SetProfileCookies(profilePath string, cookies []*Cookie) error

// CopyProfileCookies copia cookies entre perfiles
func CopyProfileCookies(srcProfile, dstProfile string) error

// === Configuración inicial ===

// LaunchWithCookies lanza navegador con cookies precargadas
func LaunchWithCookies(ctx context.Context, config *Config, cookiesFile string) (*Browser, error)

// Config.InitialCookies - campo para establecer cookies al inicio
type Config struct {
    // ... campos existentes ...
    InitialCookies []*Cookie // Cookies a establecer al lanzar
    CookiesFile    string    // Archivo de cookies a cargar
}

Formato JSON de cookies

[
  {
    "name": "session_id",
    "value": "abc123",
    "domain": ".example.com",
    "path": "/",
    "expires": 1735689600,
    "httpOnly": true,
    "secure": true,
    "sameSite": "Lax"
  }
]

Ubicación de cookies en perfil Chrome

~/.navegator/profiles/<nombre>/
├── Cookies            # Base de datos SQLite con cookies
├── Cookies-journal    # Journal de transacciones
└── ...

Casos de uso

Caso 1: Migrar sesión entre perfiles

// Exportar cookies del perfil A
browserA.ExportCookies(ctx, "session.json", CookieFormatJSON)

// Importar en perfil B
browserB.ImportCookies(ctx, "session.json", CookieFormatJSON)

Caso 2: Backup de sesión autenticada

// Guardar estado de sesión actual
b.ExportCookies(ctx, "backup_session.json", CookieFormatJSON)

// Restaurar más tarde
b2.ImportCookies(ctx, "backup_session.json", CookieFormatJSON)

Caso 3: Lanzar con sesión precargada

config := browser.DefaultConfig()
config.CookiesFile = "authenticated_session.json"
b, _ := browser.Launch(ctx, config)
// Ya está autenticado al iniciar

Caso 4: Sincronizar cookies entre máquinas

// Máquina A - exportar
GetProfileCookies("~/.navegator/profiles/main").Export("cookies.json")

// Máquina B - importar
SetProfileCookies("~/.navegator/profiles/main", LoadCookies("cookies.json"))

Consideraciones de seguridad

⚠️ Importante: Las cookies pueden contener tokens de sesión y datos sensibles

  • Advertir al usuario sobre seguridad de archivos exportados
  • Opción para encriptar archivos de cookies
  • No guardar cookies de sesión por defecto
  • Limpiar cookies sensibles en exports

Referencias