const { chromium } = require('playwright'); const fs = require('fs'); const path = require('path'); const http = require('http'); function apiLogin() { return new Promise((resolve, reject) => { const payload = JSON.stringify({ grant_type: 'password', client_secret: 'JiRE9iL3pqRnqcFp6wDeYH0tYu97QSpkrwVKAvEP', client_id: 2, username: 'IVAN@flechasyventiladores-rached.com', password: 'Nexus01' }); const req = http.request({ hostname: 'appapi.flechasyventiladores-rached.com', path: '/api/seguridad/login', method: 'POST', headers: { 'Content-Type': 'application/json', 'Origin': 'http://app.flechasyventiladores-rached.com', 'Referer': 'http://app.flechasyventiladores-rached.com/', 'Content-Length': Buffer.byteLength(payload) } }, res => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => { try { resolve(JSON.parse(data)); } catch (e) { reject(e); } }); }); req.on('error', reject); req.write(payload); req.end(); }); } (async () => { const outDir = path.resolve(__dirname, '../data/rached_import/har'); fs.mkdirSync(outDir, { recursive: true }); const loginResp = await apiLogin(); const sesion = JSON.stringify(loginResp.datos); const browser = await chromium.launch({ headless: true }); const context = await browser.newContext(); const page = await context.newPage(); const allRequests = []; await page.route('**/*', route => { const req = route.request(); allRequests.push({ method: req.method(), url: req.url(), headers: req.headers(), postData: req.postData() }); route.continue(); }); await page.goto('http://app.flechasyventiladores-rached.com/', { waitUntil: 'networkidle' }); await page.waitForTimeout(2000); await page.evaluate(s => { localStorage.setItem('sesion', s); }, sesion); const routes = [ '/administracion/servicios/ordenesservicio', '/administracion/catalogos/clientes', '/administracion/catalogos/articulos', '/administracion/catalogos/mecanicos', '/administracion/catalogos/sucursales', '/administracion/catalogos/motociclistas', '/administracion/catalogos/viasentrega', '/administracion/catalogos/telefonostipos', '/administracion/catalogos/direccionestipos', ]; for (const r of routes) { await page.goto('http://app.flechasyventiladores-rached.com' + r, { waitUntil: 'networkidle' }); await page.waitForTimeout(5000); } fs.writeFileSync(path.join(outDir, 'all_requests.json'), JSON.stringify(allRequests, null, 2)); await page.screenshot({ path: path.join(outDir, 'last_screen.png'), fullPage: true }); await browser.close(); console.log('Captured', allRequests.length, 'total requests'); })();