24 lines
1.3 KiB
JavaScript
24 lines
1.3 KiB
JavaScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
const UDD = 'C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data';
|
|
const lines = fs.readFileSync(path.join(UDD, 'DevToolsActivePort'), 'utf8')
|
|
.split('\n').map(s => s.trim()).filter(Boolean);
|
|
const ws = new WebSocket(`ws://127.0.0.1:${lines[0]}${lines[1]}`);
|
|
await new Promise((res, rej) => { ws.addEventListener('open', () => res()); ws.addEventListener('error', () => rej(new Error('ws'))); });
|
|
let seq = 0; const pend = new Map();
|
|
ws.addEventListener('message', ev => {
|
|
const m = JSON.parse(ev.data);
|
|
if (m.id && pend.has(m.id)) { pend.get(m.id)(m.result); pend.delete(m.id); }
|
|
});
|
|
const send = (method, params = {}) => new Promise(r => { const id = ++seq; pend.set(id, r); ws.send(JSON.stringify({ id, method, params })); });
|
|
|
|
const { targetInfos } = await send('Target.getTargets');
|
|
console.log('--- 当前所有标签页 ---');
|
|
for (const t of targetInfos.filter(t => t.type === 'page')) console.log(' ' + t.url.slice(0, 110));
|
|
|
|
const targets = targetInfos.filter(t => t.type === 'page' && /seller-data\/commodity|goofish\.com\/search/.test(t.url));
|
|
for (const t of targets) { await send('Target.closeTarget', { targetId: t.targetId }); console.log('closed: ' + t.url.slice(0, 90)); }
|
|
if (!targets.length) console.log('没有需要关闭的临时标签页');
|
|
ws.close();
|
|
process.exit(0);
|