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

192 lines
5.7 KiB
Markdown

# 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
```go
// === 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
```json
[
{
"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
```go
// 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
```go
// 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
```go
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
```go
// 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