6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.8 KiB
3.8 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 | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| chrome_launch | function | go | browser | 1.1.0 | impure | func ChromeLaunch(opts ChromeLaunchOpts) (int, error) | Lanza Google Chrome con remote debugging habilitado en el puerto indicado. Busca chrome.exe en PATH (WSL2) o en rutas conocidas de Windows. En WSL2+chrome.exe, traduce UserDataDir a ruta Windows via wslpath e inyecta --remote-debugging-address=0.0.0.0 automaticamente. Espera hasta 15s a que el puerto CDP este listo antes de retornar. Retorna el PID del proceso. |
|
false | error_go_core |
|
|
int: PID del proceso Chrome lanzado | true |
|
functions/browser/chrome_launch_test.go | functions/browser/chrome_launch.go |
Ejemplo
// Linux nativo (sin WSL2 o con Linux Chrome)
pid, err := ChromeLaunch(ChromeLaunchOpts{
Port: 9222,
Headless: true,
})
if err != nil {
log.Fatal(err)
}
defer CdpClose(nil, pid)
// WSL2 → chrome.exe Windows: cero configuracion, todo automatico
// ChromeLaunch detecta WSL2+.exe, traduce user-data-dir y bind 0.0.0.0
pid, err := ChromeLaunch(ChromeLaunchOpts{})
if err != nil {
log.Fatal(err)
}
// CDP listo en 127.0.0.1:9222 desde WSL2
conn, err := CdpConnect(9222)
Cuando usarla
Cuando necesites lanzar Chrome con CDP desde Go para automatizacion (scraping, tests, capturas). Usar antes de CdpConnect / CdpNavigate / CdpScreenshot. Funciona tanto en Linux nativo como en WSL2 apuntando al chrome.exe de Windows.
Gotchas
- WSL2 + chrome.exe: la funcion detecta automaticamente WSL2 (
/proc/versioncontiene "microsoft"/"WSL") y que el ejecutable es.exe. En ese caso:UserDataDirvacio o con prefijo/tmp/o/home/se traduce viawslpath -wa ruta Windows. Por defecto:C:\Users\<USER>\AppData\Local\fn-chrome-cdp-profile.- Se inyecta
--remote-debugging-address=0.0.0.0para que Chrome sea accesible desde WSL2 vía127.0.0.1:<port>. waitCDPReadysiempre espera usando127.0.0.1(WSL networking reenvía localhost → Windows).
wslpathdebe estar disponible: se invoca como subproceso. Si falla,ChromeLaunchretorna error.wslpathes estándar en WSL2 desde Windows 10 1903+.- Chrome no cierra solo: el PID devuelto es el proceso Chrome. Usar
CdpClose(nil, pid)oos.FindProcess(pid).Kill()para terminarlo. - Puerto ocupado: si el puerto ya está en uso por otra instancia de Chrome,
waitCDPReadypuede conectar al proceso previo. Usar puertos distintos por sesión. - Headless en Windows via WSL2:
--headless=new --disable-gpufunciona bien con chrome.exe.
Notas
Busca Chrome en este orden:
chrome.exeen PATH (disponible en WSL2 si Windows lo tiene en PATH)google-chrome/chromium-browser/chromium(Linux nativo)/mnt/c/Program Files/Google/Chrome/Application/chrome.exe/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe
Los flags aplicados desactivan funcionalidades de red y actualizacion en segundo plano para entornos de automatizacion. En modo headless se agrega --headless=new --disable-gpu.
El struct ChromeLaunchOpts se define en el mismo archivo.
Capability growth log
- v1.1.0 (2026-05-16) — auto-handle WSL2→Windows chrome.exe: translate user-data-dir via wslpath + inject --remote-debugging-address=0.0.0.0