const WebSocket = require('ws'); const http = require('http'); async function getConsoleLogs() { try { // Shop Time νƒ­μ˜ WebSocket URL const wsUrl = 'ws://localhost:9222/devtools/page/FB23F44B50DA1DD3F02A80346F3D67CF'; const ws = new WebSocket(wsUrl); ws.on('open', () => { console.log('πŸ”— Chrome CDP에 μ—°κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.'); // Runtime 도메인 ν™œμ„±ν™” ws.send(JSON.stringify({ id: 1, method: 'Runtime.enable', params: {} })); // Console 도메인 ν™œμ„±ν™” ws.send(JSON.stringify({ id: 2, method: 'Console.enable', params: {} })); // 5초 후에 μ—°κ²° μ’…λ£Œ setTimeout(() => { console.log('πŸ“ μ½˜μ†” 둜그 μˆ˜μ§‘ μ™„λ£Œ'); ws.close(); }, 5000); }); let logCount = 0; ws.on('message', (data) => { const message = JSON.parse(data); // μ½˜μ†” λ©”μ‹œμ§€ 처리 if (message.method === 'Console.messageAdded' && logCount < 10) { const log = message.params.message; const timestamp = new Date(log.timestamp).toLocaleTimeString(); console.log(`[${timestamp}] ${log.level}: ${log.text}`); logCount++; } // Runtime μ½˜μ†” API 호좜 처리 if (message.method === 'Runtime.consoleAPICalled' && logCount < 10) { const timestamp = new Date().toLocaleTimeString(); const args = message.params.args.map(arg => arg.value || arg.description).join(' '); console.log(`[${timestamp}] ${message.params.type}: ${args}`); logCount++; } }); ws.on('error', (error) => { console.error('❌ μ—°κ²° 였λ₯˜:', error.message); }); ws.on('close', () => { console.log('βœ… 연결이 μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.'); process.exit(0); }); } catch (error) { console.error('❌ 였λ₯˜ λ°œμƒ:', error.message); } } getConsoleLogs();