如何使用JS实现每日自动点击指定网站特定按钮,不受本地设备开关机影响?
可行解决方案及实现思路
要实现不受本地开关机影响的定时自动化操作,核心逻辑是把任务跑在云端长期运行的环境中,以下是三个适配不同场景的JS技术栈解决方案:
方案1:云函数+无头浏览器方案(通用适配绝大多数场景)
- 适用场景:按钮点击需要前端页面交互、有前端渲染逻辑、无法直接抓接口的场景
- 实现逻辑:用支持Node.js运行时的云函数搭配Puppeteer/Playwright无头浏览器,配置定时触发规则,到点后云函数自动启动,模拟浏览器访问目标站点、完成按钮点击操作后销毁实例即可
- 核心实现要点:
- 本地先写好自动化操作逻辑:处理登录态(可把cookie存在云函数环境变量里,避免每次重复登录)、定位目标按钮、触发点击,示例代码片段如下:
const puppeteer = require('puppeteer'); exports.handler = async (event, context) => { const browser = await puppeteer.launch({ headless: 'new' }); const page = await browser.newPage(); // 注入提前拿到的站点cookie await page.setCookie(JSON.parse(process.env.TARGET_SITE_COOKIE)); await page.goto('目标页面的URL'); // 等待目标按钮加载完成 await page.waitForSelector('#目标按钮的选择器', { timeout: 10000 }); // 触发点击 await page.click('#目标按钮的选择器'); // 可选:等待操作完成确认生效 await page.waitForNetworkIdle({ idleTime: 2000 }); await browser.close(); return { status: 'success' }; };- 代码部署到云函数平台后,配置定时CRON规则为
0 12 * * *即可实现每天中午12点触发 - 站点有反爬机制的话,可以额外加UA模拟、随机请求延时、简单人机验证绕过逻辑
方案2:直接调用接口方案(性能最高,推荐优先尝试)
- 适用场景:按钮点击本质是调用后端HTTP接口,没有复杂前端交互逻辑的场景
- 实现逻辑:跳过模拟浏览器加载页面的步骤,直接在云函数里模拟按钮点击对应的HTTP请求,资源消耗极低、执行速度快
- 核心实现要点:
- 先在本地浏览器F12打开网络面板,点击目标按钮时抓取对应的请求信息,包括请求地址、方法、头信息、参数、鉴权所需的cookie/token
- 云函数中用
fetch或者axios编写请求逻辑,同样配置定时触发即可,示例代码片段如下:
const axios = require('axios'); exports.handler = async (event, context) => { try { const res = await axios.post('目标接口URL', { // 按钮点击对应的请求参数 }, { headers: { 'Cookie': process.env.TARGET_SITE_COOKIE, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } }); return { status: 'success', response: res.data }; } catch (err) { return { status: 'fail', error: err.message }; } };
方案3:Node.js 常驻服务方案(适合自有云服务器的场景)
- 适用场景:自己持有长期运行的云服务器,需要灵活调整任务逻辑的场景
- 实现逻辑:写一个常驻运行的Node.js服务,用定时任务库配置触发规则,到点执行自动化逻辑即可
- 核心实现要点:
- 用
node-schedule配置定时规则,用PM2管理Node进程,保证服务崩溃后能自动重启,示例代码片段如下:
const schedule = require('node-schedule'); // 配置每天中午12点触发 const task = schedule.scheduleJob('0 12 * * *', async () => { console.log('开始执行点击任务'); // 这里放入方案1的Puppeteer逻辑或者方案2的接口请求逻辑 }); - 用
通用注意事项
- 登录态有效期:如果站点的cookie/token有过期限制,可以额外加自动刷新登录态的逻辑,避免任务突然失效
- 执行通知:可以在任务执行完成后加通知逻辑,同步执行结果到你常用的通讯工具,方便排查问题
- 合规性:确保你操作的站点允许自动化操作,不要违反站点用户协议,避免账号被限制
内容的提问来源于stack exchange,提问作者Ahmad
相关产品推荐
相关产品推荐

