feat(browser): auto-commit con 44 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-06 12:49:54 +02:00
parent e2c073b8b7
commit 5b10b419a2
44 changed files with 2543 additions and 28 deletions
@@ -0,0 +1,62 @@
---
id: cdp_save_storage_state_go_browser
name: cdp_save_storage_state
kind: function
lang: go
domain: browser
purity: impure
version: 1.0.0
tested: false
description: "Captura cookies y localStorage de la página activa y los serializa a un archivo JSON para restaurar la sesión sin repetir el login."
tags: [cdp, browser, storage, session, cookies, localStorage, auth, navegator]
signature: "func CdpSaveStorageState(c *CDPConn, outPath string) error"
uses_functions:
- cdp_evaluate_go_browser
uses_types: []
returns: []
returns_optional: false
error_type: error_go_core
imports: []
file_path: "functions/browser/cdp_save_storage_state.go"
example: |
conn, _ := CdpConnect(9222)
defer CdpClose(conn)
CdpNavigate(conn, "https://app.example.com")
err := CdpSaveStorageState(conn, "/tmp/session.json")
params:
- name: c
desc: "Conexión CDP activa apuntando a la pestaña con la sesión autenticada."
- name: outPath
desc: "Ruta del archivo JSON de salida donde se escribirá el estado (cookies + localStorage)."
output: "nil si el archivo se escribió correctamente; error con contexto en caso de fallo de red, CDP o escritura."
---
## Ejemplo
```go
conn, err := CdpConnect(9222)
if err != nil {
log.Fatal(err)
}
defer CdpClose(conn)
// Navegar y autenticarse manualmente o con scraping
CdpNavigate(conn, "https://app.example.com/dashboard")
// Guardar estado de la sesión
if err := CdpSaveStorageState(conn, "/tmp/session.json"); err != nil {
log.Fatal(err)
}
// /tmp/session.json contiene cookies + localStorage listos para restaurar
```
## Cuando usarla
Tras completar un login en el browser (manual o automatizado), antes de cerrar la sesión o como paso final del script de autenticación. En la próxima ejecución, llama a `CdpLoadStorageState` en vez de repetir el flujo de login.
## Gotchas
- **localStorage es por-origen**: solo captura el localStorage del origen actualmente cargado en la pestaña. Si necesitas preservar localStorage de múltiples dominios, guarda un estado por cada dominio navegado.
- **Cookies globales del perfil**: `Network.getAllCookies` devuelve todas las cookies del perfil de Chrome, no solo las del origen activo. El JSON puede ser grande si el perfil tiene muchas cookies.
- **Páginas especiales** (`about:blank`, `chrome://`, extensiones): `CdpEvaluate` sobre localStorage fallará; la función lo maneja devolviendo un mapa vacío de forma defensiva, así que no romperá — pero el localStorage quedará vacío en el JSON.
- **Permisos**: el archivo se escribe con `0644`; asegúrate de que el directorio de destino existe antes de llamar a la función.