如何在Tampermonkey中获取setInterval更新的船只移动精确时间戳
如何在Chrome中找到船只移动表格的隐藏精确时间戳
针对你需要获取Tampermonkey脚本所需的精确时间戳需求,我整理了Chrome开发者工具下的具体追踪步骤——毕竟页面每秒更新DOM,原始数据肯定存在内存里的某个地方:
1. Hook住setInterval,定位更新定时器
页面每秒更新表格,大概率是通过setInterval实现的,我们可以先拦截所有定时器创建,找到目标回调:
- 打开Chrome开发者工具(快捷键
F12或右键「检查」),切换到Console标签页 - 输入以下代码覆盖原生
setInterval,记录所有定时器的细节:const originalSetInterval = window.setInterval; window.setInterval = function(callback, delay, ...args) { console.log('新定时器创建:', { delay, callback, args }); // 给回调打个标记,方便后续追踪 callback._trackId = `interval_${Date.now()}`; return originalSetInterval(callback, delay, ...args); }; - 刷新页面,在Console里找
delay为1000(每秒执行)的那条记录,点击回调函数的链接,进入函数定义处。
2. 查看回调闭包中的原始数据
进入目标回调的代码后:
- 在函数内部任意一行打个断点(点击代码行号左侧),当页面更新表格时,断点会触发
- 切换到Sources标签页右侧的Scope面板,展开Closure(闭包)部分,这里会显示函数能访问的所有变量
- 你要找的是包含
moveInfoXXX(比如815198)ID、结束时间戳、船只数量等完整数据的数组/对象,这就是页面更新DOM的原始数据源。
3. 全局变量搜索或代码搜索兜底
如果上面的方法没找到,试试这两个方向:
- 全局变量搜索:在Console里输入
movements、shipMoves、moveData这类可能的变量名,直接查看是否有全局存储的完整数据 - 代码全文搜索:在Sources标签页按
Ctrl+Shift+F,搜索moveInfo(对应tr的ID前缀),找到生成表格行的代码块,顺着代码找到它读取数据的源头。
4. DOM断点追踪更新逻辑
另一种更直观的方式是通过DOM变化断点定位:
- 在Elements标签页,选中任意一个
movements_table里的<tr>元素,右键选择Break on > Subtree modifications - 当表格更新时,断点会触发,此时查看右侧Call Stack(调用栈),往上回溯调用链,找到更新DOM的函数,就能找到它依赖的原始数据(包含精确时间戳)。
找到原始数据后,你就可以在Tampermonkey脚本里直接提取数据生成需要的数组,比如假设数据存在window.shipMovementList里:
var movements = window.shipMovementList.map(item => [ item.id, // 比如815198 item.endTimestamp, // 毫秒级时间戳 item.ships, // 200 parseInt(item.quantity.replace(',', '')), // 200000 item.source, // Town1 item.target // Town2 ]);
内容的提问来源于stack exchange,提问作者Panos
相关产品推荐
相关产品推荐

