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

如何用JavaScript实现Google Colab保活:定时点击与间隔设置

解决Google Colab长时间保持活跃的问题

嘿,我来帮你搞定Colab防止进程中断的需求!你的思路没问题,但原来的代码因为所有setTimeout几乎同时触发,所以点击完全没间隔。下面给你两种靠谱的实现方案:

方案一:改进版Colab运行按钮定时点击

先算好总次数:12小时=720分钟,每20分钟点击一次,总共需要720/20=36次。我们用递归函数实现每次点击后延迟指定时间再执行下一次,完美模拟Python中time.sleep()的效果:

// 获取所有运行按钮
const runButtons = document.getElementsByTagName('colab-run-button');
if (runButtons.length === 0) {
  console.log("没找到可点击的运行按钮!");
} else {
  const targetButton = runButtons[runButtons.length - 1]; // 取最后一个按钮
  const intervalMinutes = 20; // 间隔时间(分钟)
  const totalHours = 12; // 总时长
  const totalClicks = Math.floor(totalHours * 60 / intervalMinutes); // 总点击次数
  let clickCount = 0;

  function clickButtonPeriodically() {
    if (clickCount >= totalClicks) {
      console.log("定时点击任务已完成!");
      return;
    }
    targetButton.click();
    clickCount++;
    console.log(`已点击第${clickCount}次,下次点击将在${intervalMinutes}分钟后`);
    // 计算延迟时间(毫秒):分钟*60秒*1000毫秒
    setTimeout(clickButtonPeriodically, intervalMinutes * 60 * 1000);
  }

  // 启动任务
  clickButtonPeriodically();
}

这段代码的优势:

  • 每次点击后才触发下一次延迟,不会出现所有点击同时执行的问题
  • 自动计算总点击次数,到点自动停止
  • 有日志输出,方便你跟踪进度

方案二:通用鼠标点击/滚动保持活跃(更推荐)

如果担心按钮元素找不到或者失效,直接模拟鼠标点击或页面滚动是更通用的方案——Colab判断活跃的依据是用户是否有交互操作,只要每隔一段时间触发一次交互就行。下面的代码会每隔15分钟在当前鼠标位置点击一次,同时随机滚动页面(不影响你后续的鼠标操作),持续12小时:

const intervalMinutes = 15; // 间隔时间(分钟)
const totalHours = 12;
const totalCycles = Math.floor(totalHours * 60 / intervalMinutes);
let cycleCount = 0;

function keepActive() {
  if (cycleCount >= totalCycles) {
    console.log("保持活跃任务已结束!");
    return;
  }

  // 1. 模拟鼠标在当前位置点击一次
  const clickEvent = new MouseEvent('click', {
    bubbles: true,
    cancelable: true,
    view: window
  });
  document.elementFromPoint(window.screenX, window.screenY).dispatchEvent(clickEvent);

  // 2. 随机滚动页面一点(可选,增强活跃效果)
  const scrollAmount = Math.floor(Math.random() * 100) - 50; // 上下随机滚动-50到50像素
  window.scrollBy(0, scrollAmount);

  cycleCount++;
  console.log(`已完成第${cycleCount}次活跃操作,下次将在${intervalMinutes}分钟后`);
  setTimeout(keepActive, intervalMinutes * 60 * 1000);
}

// 启动任务
keepActive();

注意事项:

  1. 代码需要在浏览器控制台运行(Colab页面按F12打开开发者工具,切换到Console标签)
  2. 运行代码后不要关闭浏览器标签页,也不要让浏览器进入睡眠模式(可以设置浏览器不自动睡眠)
  3. 如果需要提前停止任务,刷新页面即可

内容的提问来源于stack exchange,提问作者Deshwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:57:28