f74d0d8e32
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.9 KiB
5.9 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 | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| launch_chromium_proxy | function | bash | browser | 1.0.0 | impure | launch_chromium_proxy [--proxy URL] [--profile DIR] [--url URL] [--ca-cert PATH] [--extra "ARGS"] | Lanza Chromium (o Chrome) apuntando a un proxy HTTP/HTTPS local con un perfil completamente aislado del perfil real del usuario. Pensado para capturar trafico con un proxy de interceptacion (mitmproxy, Burp Suite) sin contaminar la sesion normal de navegacion. Emite un JSON con el PID del proceso lanzado. |
|
false | error_go_core |
|
JSON en stdout: {"pid": <pid>, "browser": "<binario>", "proxy": "<url>", "profile": "<dir>", "log": "<ruta_log>"}. Mensajes de estado e informacion de CA en stderr. El navegador corre en background desacoplado de la sesion. Exit codes: 0=lanzado correctamente, 1=binario no encontrado o argumento invalido o error al crear el directorio de perfil. | false | bash/functions/browser/launch_chromium_proxy.sh |
Ejemplo
source bash/functions/browser/launch_chromium_proxy.sh
# Caso mas comun: interceptar trafico con mitmproxy corriendo en 8080
# (sin CA instalado: --ignore-certificate-errors se aplica automaticamente)
result=$(launch_chromium_proxy --proxy http://127.0.0.1:8080 --url https://httpbin.org/get)
echo "$result"
# {"pid":12345,"browser":"chromium","proxy":"http://127.0.0.1:8080","profile":"/tmp/chromium-proxy","log":"/tmp/chromium-proxy-12345.log"}
# Con CA cert instalado (mitmproxy): sin --ignore-certificate-errors
launch_chromium_proxy \
--proxy http://127.0.0.1:8080 \
--ca-cert ~/.mitmproxy/mitmproxy-ca-cert.pem \
--profile /tmp/mitm-session \
--url https://api.ejemplo.com/v1/test
# Con Burp Suite en puerto 8081, perfil aislado y ventana de tamano fijo
launch_chromium_proxy \
--proxy http://127.0.0.1:8081 \
--profile /tmp/burp-session \
--extra "--window-size=1440,900" \
--url https://app.objetivo.com
Cuando usarla
Cuando necesitas capturar y analizar trafico HTTPS de un navegador con mitmproxy, Burp Suite u otro proxy de interceptacion, sin tocar el perfil real del usuario ni sus cookies/credenciales guardadas. Ideal antes de hacer analisis de trafico de una app web o API, o al reproducir un flujo autenticado desde una sesion limpia.
Gotchas
- Deteccion de binario en orden: la funcion prueba
chromium,chromium-browser,google-chrome-stable,google-chrome. En sistemas donde solo existegoogle-chrome, ese sera el binario usado. Si ninguno esta en el PATH, retorna exit 1. Instalar consudo apt install chromiumochromium-browser. --ignore-certificate-errorssin--ca-cert: este flag desactiva toda la validacion TLS del navegador. Es conveniente para empezar rapido, pero reduce la seguridad de la sesion. Para produccion o analisis de seguridad serio, instalar el CA del proxy en el sistema (sudo cp mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy.crt && sudo update-ca-certificates) o en el perfil de Chromium (chrome://settings/certificates), y pasar--ca-certpara que la funcion omita el flag inseguro.--proxy-bypass-list="<-loopback>": fuerza que el trafico loopback (127.0.0.1, localhost) TAMBIEN pase por el proxy. Sin esto, Chromium excluye loopback del proxy por defecto y no veras esas peticiones en mitmproxy. Si quieres el comportamiento estandar (excluir loopback), elimina este flag via--extra.- Perfil persistente entre sesiones: el perfil en
/tmp/chromium-proxy(o el directorio que elijas) persiste entre ejecuciones. Si quieres una sesion 100% limpia cada vez, pasa--profile /tmp/chromium-proxy-$$(usa el PID del shell como sufijo) o borra el directorio antes de llamar a la funcion. setsid+disown: el navegador se lanza desacoplado de la sesion del agente. Si la shell/sesion que llamo a la funcion termina, el proceso Chromium sigue vivo. Para matarlo, usarkill <pid>con el PID del JSON de salida.- Log del navegador: stdout y stderr de Chromium se redirigen a
/tmp/chromium-proxy-<pid>.log. Si el navegador no arranca, revisar ese archivo para ver el error. - Chrome STABLE 138+: al igual que
chrome_load_extensions, algunos flags de automatizacion estan bloqueados en Chrome STABLE. Para interceptacion de trafico--proxy-servery--user-data-dirsiguen funcionando en todas las versiones. Esta funcion es compatible con Chrome/Chromium en cualquier canal. - Multiples instancias: si ya hay una instancia de Chromium corriendo con el mismo
--user-data-dir, Chromium puede reusar esa instancia en lugar de abrir una nueva. Usar un directorio de perfil distinto por sesion concurrente.