Files
fn_registry/functions/browser/list_chrome_profiles.md
T
Egutierrez ccfa5bc78b feat(browser): funciones anti-deteccion + perfiles para web_scraping
Funciones nuevas del dominio browser (grupo navegator):
- cdp_move_mouse_human / cdp_click_human: movimiento de raton con curva
  de Bezier cubica, easing y micro-jitter para imitar comportamiento
  humano y reducir deteccion de automatizacion.
- cdp_wait_idle: espera network-idle contando requests en vuelo via
  eventos CDP Network.*; inmune a extensiones que mutan el DOM
  (Dark Reader, uBlock) y a animaciones JS.
- list_chrome_profiles: lista perfiles de un user-data-dir (extensiones,
  nombre legible, preferencias).
- prepare_chrome_profile (bash): clona un user-data-dir conservando solo
  una whitelist de extensiones (default uBlock Origin Lite).

Modificadas:
- chrome_launch: Linux-first (chromium/google-chrome/brave antes que
  chrome.exe), KeepExtensions y Setpgid para matar el arbol con cdp_close.
- cdp_close: kill por grupo de proceso.

Todas con tests verdes (go test ./functions/browser ok).
2026-06-05 16:25:11 +02:00

3.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
list_chrome_profiles function go browser 1.0.0 impure func ListChromeProfiles(userDataDir string) ([]ChromeProfile, error) Lista los perfiles de un user-data-dir de Chrome/Chromium. Devuelve Dir (nombre del directorio para --profile-directory), Name (nombre legible de Local State), Extensions (nº de carpetas en Extensions excl. Temp) y HasPreferences. Si userDataDir es vacío usa ~/.config/chromium.
chrome
chromium
browser
profile
navegator
false error_go_core
encoding/json
os
path/filepath
sort
name desc
userDataDir Ruta al user-data-dir de Chrome/Chromium. Vacío = ~/.config/chromium.
Slice de ChromeProfile ordenado por Dir. Error si userDataDir no existe o no es legible. true
detecta perfiles con Preferences
ordena por Dir
resuelve nombres desde Local State
cuenta extensiones excluyendo Temp
excluye System Profile
HasPreferences es true para todos los perfiles devueltos
directorio sin Preferences no aparece
fallback Name igual a Dir cuando no hay Local State
error si userDataDir no existe
functions/browser/list_chrome_profiles_test.go functions/browser/list_chrome_profiles.go

Ejemplo

// Lista todos los perfiles del Chromium del usuario
profiles, err := browser.ListChromeProfiles("")
if err != nil {
    log.Fatal(err)
}
for _, p := range profiles {
    fmt.Printf("--profile-directory=%q  name=%q  extensions=%d\n",
        p.Dir, p.Name, p.Extensions)
}
// Output:
// --profile-directory="Automation"  name="Automation"  extensions=1
// --profile-directory="Default"     name="Personal"    extensions=12
// --profile-directory="Profile 1"   name="Work"        extensions=4

// Con ruta explícita (ej. Chrome en ubicación no estándar)
profiles, err = browser.ListChromeProfiles("/home/user/.config/google-chrome")

Cuando usarla

Antes de lanzar Chrome/Chromium con chrome_launch_go_browser cuando hay múltiples perfiles y quieres pasar --profile-directory al proceso. Sin elegir perfil, Chrome queda bloqueado en el selector de cuentas.

Gotchas

  • Conteo de extensiones es de carpetas, no de extensiones activas. Las carpetas de extensiones deshabilitadas o desinstaladas permanecen en disco (cache de Chrome) y se cuentan igualmente. El número es un indicador aproximado de actividad del perfil, no una lista exacta de extensiones habilitadas.
  • Local State puede no existir si el perfil es nuevo o fue creado manualmente. En ese caso Name cae al valor de Dir (sin error).
  • Profile Directory ≠ Profile Name. El argumento --profile-directory del binario Chrome acepta el valor de ChromeProfile.Dir (ej. "Profile 1"), no el Name legible.
  • "System Profile" existe en Chrome pero no es un perfil de usuario; siempre se excluye.
  • En Chrome (Google) el default suele ser ~/.config/google-chrome; en Chromium ~/.config/chromium. Pasar ruta explícita si se usa Google Chrome.