Chrome DevTools:无需滚动页面收集关注按钮并避免浏览器崩溃方案问询
问题根源
你原脚本崩溃的核心原因是持续向DOM中塞入大量未清理的用户节点,同时高频无间隔的滚动、点击操作导致浏览器资源耗尽。
可行方案脚本
直接在DevTools的Console面板粘贴运行即可,脚本会自动清理已处理的DOM节点避免内存溢出,同时控制操作频率避免触发平台风控:
// 配置项,可根据实际运行情况调整 const config = { // 每批次操作间隔时间(毫秒,避免触发风控) batchDelay: 2000, // 滚动后等待内容加载的时间(毫秒) loadWaitTime: 1500, // 关注按钮选择器,和你原逻辑保持一致 followBtnSelector: '.components-button.components-button-size-mini.components-button-type-orange.desktop.components-button-inline', // 用户列表项选择器,可根据实际页面结构调整,这里默认是粉丝列表的单个用户卡片节点 userItemSelector: '.user-follow-item', // 连续多少批次没有新内容就终止脚本 maxEmptyBatch: 3 } let emptyBatchCount = 0; const processedUserIdSet = new Set(); // 去重,避免重复关注 async function startFollowTask() { while (emptyBatchCount < config.maxEmptyBatch) { // 1. 滚动到当前列表底部 const contentContainer = document.getElementById('layout-content'); contentContainer.scrollTo(0, contentContainer.scrollHeight); // 2. 等待新内容加载完成 await new Promise(resolve => setTimeout(resolve, config.loadWaitTime)); // 3. 获取当前页所有未处理的关注按钮 const followBtns = Array.from(document.querySelectorAll(config.followBtnSelector)).filter(btn => { // 假设按钮的父节点有用户id属性,可根据实际页面结构调整去重逻辑,没有的话可以去掉这部分判断 const userId = btn.closest(config.userItemSelector)?.dataset?.uid; return userId && !processedUserIdSet.has(userId); }); if (followBtns.length === 0) { emptyBatchCount++; console.log(`未找到新的待关注用户,剩余终止重试次数:${config.maxEmptyBatch - emptyBatchCount}`); continue; } emptyBatchCount = 0; // 重置空批次计数 console.log(`本次找到${followBtns.length}个待关注用户,开始处理`); // 4. 批量点击关注按钮 followBtns.forEach(btn => { btn.click(); // 记录已处理的用户id const userId = btn.closest(config.userItemSelector)?.dataset?.uid; userId && processedUserIdSet.add(userId); }); // 5. 清理已处理的用户节点,释放内存,这是避免崩溃的核心逻辑 followBtns.forEach(btn => btn.closest(config.userItemSelector)?.remove()); // 6. 等待批次间隔再执行下一轮 await new Promise(resolve => setTimeout(resolve, config.batchDelay)); } console.log(`所有粉丝处理完成,总共关注了${processedUserIdSet.size}个用户`); } // 启动任务 startFollowTask();
调整说明
- 如果运行后没有匹配到用户节点,你可以打开DevTools的元素面板,找到单个粉丝卡片的类名替换
config.userItemSelector的取值即可 - 如果平台触发关注频率限制,可以把
batchDelay和loadWaitTime的数值调大 - 脚本运行过程中不要关闭当前页面,最小化即可,运行完成会在控制台打印最终统计数据
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

