5b10b419a2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
2.7 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 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cdp_connect_target | function | go | browser | 1.0.0 | impure | func CdpConnectTarget(host string, port int, match string) (*CDPConn, error) | Conecta por CDP a un target DETERMINISTA elegido por ID exacto o substring de URL, evitando engancharse a una pestaña al azar con el CDP global en 9222. |
|
false | error_go_core |
|
*CDPConn listo para enviar comandos CDP al target elegido. Error si ninguna tab 'page' satisface el match. | false | functions/browser/cdp_connect_target.go |
Ejemplo
// Fijar la pestaña de GitHub para que el agente no toque otras abiertas
conn, err := browser.CdpConnectTarget("", 9222, "github.com")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
// Por ID exacto de target (obtenido de GET http://localhost:9222/json)
conn2, err := browser.CdpConnectTarget("", 9222, "ABCD1234-target-id")
// Compatibilidad: sin filtro = primera tab page (igual que CdpConnect)
conn3, err := browser.CdpConnectTarget("", 9222, "")
Cuando usarla
Cuando un agente debe atarse a UNA pestaña concreta (por URL) y NO a la primera al azar — crítico con CDP global en 9222 para no operar sobre pestañas ajenas (banca, correo, sesiones activas). Usar en lugar de CdpConnect/CdpConnectHost siempre que el contexto del agente sea "esta URL concreta" y no "cualquier tab disponible".
Gotchas
- Si hay varias tabs cuya URL contiene el substring dado, se elige la primera que aparezca en
/json(orden interno del navegador). Para mayor precisión, usar el ID exacto del target. - El match de URL es substring case-insensitive;
"github"matchea"https://github.com/usuario/repo". - Con CDP global en 9222 y muchas pestañas abiertas, un
match=""sigue siendo tan arriesgado comoCdpConnect. Especificar siempre el match en producción. - La forma más segura para agentes automatizados es lanzar un perfil Chromium dedicado con
--user-data-diraislado y--remote-debugging-portpropio, de modo que/jsonsolo exponga las pestañas del agente. WebSocketDebuggerURLpuede cambiar entre reinicios del navegador; recalcular en cada sesión, no cachear entre ejecuciones.