Files
ObsidianHome/小鱼/闲鱼消息通知/probe.js
T

57 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 探针:连接已打开的 Edge,把每个 goofish 页面的候选"未读"元素打印/保存出来。
// 用法: node probe.js [输出文件]
const fs = require('fs');
const path = require('path');
const { CDP, listPages, EXPR } = require('./cdp');
const cfg = JSON.parse(fs.readFileSync(path.join(__dirname, 'config.json'), 'utf8'));
(async () => {
const outFile = process.argv[2] || path.join(__dirname, 'probe-result.json');
let pages;
try {
pages = await listPages(cfg.debugPort, cfg.urlMatch);
} catch (e) {
console.error(`无法连接调试端口 ${cfg.debugPort}:${e.message}`);
console.error('请先双击 launch-edge.bat 启动 Edge,并在那个窗口登录闲鱼、打开消息页。');
process.exit(1);
}
if (!pages.length) {
console.error(`没有找到包含 "${cfg.urlMatch}" 的标签页。请在启动的 Edge 窗口里打开 seller.goofish.com 消息页。`);
process.exit(1);
}
const results = [];
for (const p of pages) {
const cdp = new CDP(p.webSocketDebuggerUrl);
try {
await cdp.connect();
const st = await cdp.eval(EXPR);
results.push(st);
console.log('='.repeat(70));
console.log('URL :', st.url);
console.log('TITLE :', st.title);
console.log('DOM :', st.domSize, ' nodes, visibility:', st.visible);
console.log('红点候选 badges:', st.badges.length);
st.badges.slice(0, 40).forEach(b => {
console.log(` ${b.red ? '[RED]' : '[ ]'} "${b.t}" fs=${b.fs} bg=${b.bg} rect=${b.rect}`);
console.log(` ${b.p}`);
console.log(` parentText: ${JSON.stringify(b.parentText)}`);
});
console.log('class 命中:', st.classHits.length);
st.classHits.slice(0, 25).forEach(h => {
console.log(` "${h.t}" cls=${h.cls} rect=${h.rect}`);
console.log(` ${h.p}`);
});
console.log('title 内数字:', JSON.stringify(st.titleNumbers));
if (st.iframes.length) console.log('iframes:', JSON.stringify(st.iframes));
} catch (e) {
console.error('探针失败:', p.url, e.message);
} finally {
cdp.close();
}
}
fs.writeFileSync(outFile, JSON.stringify(results, null, 2), 'utf8');
console.log('\n完整结果已保存:', outFile);
})();