You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:54:02