Files
fn_registry/functions/browser/cdp_load_storage_state.md
T
egutierrez 5b10b419a2 feat(browser): auto-commit con 44 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 12:49:54 +02:00

3.0 KiB

id, name, kind, lang, domain, purity, version, tested, description, tags, signature, uses_functions, uses_types, returns, returns_optional, error_type, imports, file_path, example, params, output
id name kind lang domain purity version tested description tags signature uses_functions uses_types returns returns_optional error_type imports file_path example params output
cdp_load_storage_state_go_browser cdp_load_storage_state function go browser impure 1.0.0 false Restaura cookies y localStorage desde un archivo JSON (generado por CdpSaveStorageState) en la pestaña activa, reanudando una sesión autenticada sin repetir el login.
cdp
browser
storage
session
cookies
localStorage
auth
navegator
func CdpLoadStorageState(c *CDPConn, inPath string) error
cdp_evaluate_go_browser
false error_go_core
functions/browser/cdp_load_storage_state.go conn, _ := CdpConnect(9222) defer CdpClose(conn) CdpNavigate(conn, "https://app.example.com") CdpLoadStorageState(conn, "/tmp/session.json") CdpNavigate(conn, "https://app.example.com") // reload para que la app lea el localStorage restaurado
name desc
c Conexión CDP activa apuntando a la pestaña donde se restaurará el estado.
name desc
inPath Ruta del archivo JSON producido previamente por CdpSaveStorageState.
nil si cookies y localStorage se restauraron correctamente; error con contexto si el archivo no existe, el JSON es inválido o falla algún comando CDP.

Ejemplo

conn, err := CdpConnect(9222)
if err != nil {
    log.Fatal(err)
}
defer CdpClose(conn)

// 1. Navegar al origen correcto ANTES de restaurar
CdpNavigate(conn, "https://app.example.com")

// 2. Restaurar cookies + localStorage
if err := CdpLoadStorageState(conn, "/tmp/session.json"); err != nil {
    log.Fatal(err)
}

// 3. Recargar para que la app lea el localStorage restaurado
CdpNavigate(conn, "https://app.example.com")

// A partir de aquí la sesión está activa — no se necesitó login

Cuando usarla

Al inicio de un script de scraping autenticado, después de CdpNavigate al dominio objetivo y antes de cualquier interacción. Sustituye el flujo de login cuando ya existe un archivo de estado guardado con CdpSaveStorageState.

Gotchas

  • Orden obligatorio: navegar → load → reload. El localStorage es por-origen: si llamas a esta función antes de navegar al dominio correcto, los setItem escriben en el origen equivocado (p.ej. about:blank) y la app no los ve. Secuencia correcta: CdpNavigate(dominio)CdpLoadStorageState(...)CdpNavigate(dominio) de nuevo.
  • Cookies globales del perfil: Network.setCookies restaura todas las cookies del archivo, que pueden ser de múltiples dominios. Esto es el comportamiento esperado y compatible con cómo las guardó CdpSaveStorageState.
  • Archivo inexistente o corrupto: la función devuelve error explícito; comprueba que el archivo existe antes de llamarla (por ejemplo con os.Stat) si quieres un fallback a login completo.
  • Sesión expirada: restaurar el estado no renueva tokens del servidor. Si la sesión expiró (cookies caducadas, JWT vencido), la app redirigirá a login igualmente. En ese caso re-autentícate y vuelve a guardar el estado.