// 仅连接 CDP 读取 __trae_dbg(配合手动启动的带调试端口实例) const sleep = ms => new Promise(r => setTimeout(r, ms)) ;(async () => { let page = null for (let i = 0; i < 20 && !page; i++) { await sleep(1000) try { const list = await (await fetch('http://127.0.0.1:9222/json')).json() page = (list || []).find(t => t.type === 'page' && /index\.html/.test(t.url || '')) } catch {} } if (!page) { console.log('no page target'); process.exit(1) } const ws = new WebSocket(page.webSocketDebuggerUrl) await new Promise((res, rej) => { ws.onopen = res; ws.onerror = rej }) for (let i = 0; i < 10; i++) { await sleep(2000) const r = await new Promise(resolve => { const id = 777 + i const onMsg = ev => { const m = JSON.parse(ev.data); if (m.id === id) { ws.removeEventListener('message', onMsg); resolve(m.result) } } ws.addEventListener('message', onMsg) ws.send(JSON.stringify({ id, method: 'Runtime.evaluate', params: { expression: 'JSON.stringify({dbg: window.__trae_dbg || null, hasNg: !!window.angular, url: location.href})', returnByValue: true } })) }) console.log(`t+${(i + 1) * 2}s`, r.result && r.result.value) } ws.close() process.exit(0) })()