c165f2f788
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/
5.7 KiB
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 avanzadapkg/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
- CDP Network.getCookies: https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-getCookies
- CDP Storage.getCookies: https://chromedevtools.github.io/devtools-protocol/tot/Storage/#method-getCookies
- Chrome Cookies DB: SQLite format
- Netscape cookies.txt: http://fileformats.archiveteam.org/wiki/Netscape_cookies.txt