830f2d34de
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.
4.0 KiB
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. |
|
false | error_go_core | false |
|
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 usarpass show claude/sudo | sudo -S apply_chromium_cdp_flago 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_browseren otro puerto (ej. 9333) o usar--port 9333en 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
grepque la líneaexport CHROMIUM_FLAGScon el puerto correcto quedó en el archivo. Si falla, restaura el backup y sale con error. - Ver
projects/web_scraping/CHROMIUM_SYSTEM.mdpara el contexto completo del sistema CDP de este equipo.