Files
fn_registry/bash/functions/browser/apply_chromium_cdp_flag.md
Egutierrez 830f2d34de feat(browser): funciones idempotentes para config de sistema de chromium
Cierra el gap de reproducibilidad entre PCs del proyecto web_scraping:
la organizacion de extensiones y el CDP global dejaban de ser pasos
manuales con sudo documentados en prosa.

- apply_chromium_extension_policy: escribe ExtensionInstallForcelist
  (whitelist via --keep) en /etc/chromium/policies/managed/extensions.json
  de forma idempotente, con backup automatico y validacion JSON. --dry-run
  previsualiza sin tocar el sistema.
- apply_chromium_cdp_flag: gestiona /etc/chromium.d/cdp (CDP global).
  Loopback por defecto, --network para bind 0.0.0.0 (con aviso), --remove
  para desactivar, --dry-run para previsualizar. Idempotente con backup.

Ambas: dominio browser, grupo navegator, impuras (escriben en /etc via
sudo), guard de auto-ejecucion (ejecutables con fn run y sourceables).

Docs del proyecto (CONVENTIONS.md reglas 8/9, CHROMIUM_SYSTEM.md
inventario + tabla accionable) ahora apuntan a 'fn run apply_chromium_*'
como metodo canonico en vez de editar los archivos de /etc a mano.
2026-06-05 16:33:35 +02:00

4.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, params, output, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path params output file_path
apply_chromium_cdp_flag function bash browser 1.0.0 impure apply_chromium_cdp_flag [--port N] [--network] [--fragment-path <path>] [--remove] [--dry-run] Gestiona de forma idempotente el fragmento /etc/chromium.d/cdp que activa Chrome DevTools Protocol global en todo chromium que el usuario lance en el equipo. Escribe, actualiza o borra el fragmento con backup automático.
navegator
chromium
cdp
devtools
browser
automation
infra
false error_go_core
false
name desc
--port N Puerto TCP donde Chromium escuchará conexiones CDP. Default 9222.
name desc
--network Si se pasa, añade --remote-debugging-address=0.0.0.0 (accesible desde la red local). Por defecto solo loopback (127.0.0.1). Imprime advertencia de seguridad.
name desc
--fragment-path <path> Ruta del fragmento a escribir/borrar. Default /etc/chromium.d/cdp.
name desc
--remove Borra el fragmento (desactiva CDP global). Idempotente: si no existe, no-op.
name desc
--dry-run Imprime el fragmento que se escribiría sin tocar nada. No requiere sudo.
Sale 0 en éxito (aplicado, ya-aplicado, o eliminado). Sale != 0 en error con mensaje a stderr. En caso de actualización imprime ruta del backup creado. bash/functions/browser/apply_chromium_cdp_flag.sh

Ejemplo

# Activar CDP global en loopback puerto 9222 (proyecto web_scraping, regla 8)
source bash/functions/browser/apply_chromium_cdp_flag.sh
apply_chromium_cdp_flag

# Previsualizar el fragmento sin escribir nada (no requiere sudo)
apply_chromium_cdp_flag --port 9222 --dry-run

# Puerto alternativo (para correr en paralelo al navegador del usuario)
apply_chromium_cdp_flag --port 9333

# Activar expuesto a la red local (RIESGO: cualquier host de la LAN puede controlar el navegador)
apply_chromium_cdp_flag --port 9222 --network

# Desactivar CDP global
apply_chromium_cdp_flag --remove

# Ruta personalizada (útil en pruebas o entornos chroot)
apply_chromium_cdp_flag --port 9222 --fragment-path /tmp/test_cdp_fragment --dry-run

Cuando usarla

Al preparar un PC nuevo para controlar el chromium diario del usuario vía CDP (primer setup del proyecto web_scraping, regla 8). Al cambiar el puerto CDP del sistema. Al desactivar esa capacidad antes de prestar o formatear el equipo. Sustituye el paso manual "crear /etc/chromium.d/cdp con sudo" documentado en CHROMIUM_SYSTEM.md.

Gotchas

  • Requiere sudo para escribir bajo /etc/. En este equipo usar pass show claude/sudo | sudo -S apply_chromium_cdp_flag o ejecutar como root.
  • --network (0.0.0.0) es un riesgo de seguridad serio: cualquier máquina en la red local puede conectarse al puerto CDP y controlar Chromium completamente (leer cookies, sesiones, inyectar JavaScript). Solo usar en entornos de red aislados o laboratorios.
  • El chromium ya abierto antes del cambio no hereda el flag hasta que se reinicie. El fragmento solo se aplica en el próximo arranque de /usr/bin/chromium.
  • Dos procesos chromium no pueden compartir el mismo puerto. Si el usuario ya tiene un chromium con CDP en 9222, la automatización dedicada debe arrancar con chrome_launch_go_browser en otro puerto (ej. 9333) o usar --port 9333 en esta función.
  • Idempotente: si el fragmento ya existe con contenido idéntico, la función sale 0 sin tocar nada ni crear backup.
  • Backup automático: al sobreescribir, crea <path>.bak.YYYYMMDD. Si ya existe un backup del mismo día, no lo sobreescribe (el primero del día se preserva).
  • Validación post-escritura: tras escribir, verifica con grep que la línea export CHROMIUM_FLAGS con el puerto correcto quedó en el archivo. Si falla, restaura el backup y sale con error.
  • Ver projects/web_scraping/CHROMIUM_SYSTEM.md para el contexto completo del sistema CDP de este equipo.