不想装Python环境、不想学Selenium写代码——用Tampermonkey浏览器脚本也能做简单的网页自动化,配合代理IP轮换、定时刷新、数据抓取。适合轻量级的自动化需求,不需要编程基础。
Tampermonkey是什么、能做什么
Tampermonkey是一个浏览器扩展(Chrome/Firefox/Edge),可以注入自定义JavaScript到任意网页,在页面加载时自动执行。俗称油猴脚本。能做:自动刷新页面(定时或手动)、自动点击按钮(比如签到)、抓取页面数据并导出、修改页面样式、自动填充表单。
配合代理IP的场景:用Tampermonkey写一个自动刷新+抓取数据的脚本,再配合SwitchyOmega定时切换代理IP——每切换一次IP刷新一次目标页面抓一次数据——不用写一行Python。
三步搭建自动化环境
第一步:装Tampermonkey扩展→Chrome/Edge商店搜”Tampermonkey”→安装。
第二步:装SwitchyOmega(参考第28篇ID 13567),配好你的代理IP。天行IP静态代理月付6元起,邀请码 blsj 享折扣。
第三步:写脚本或装现成的。本文下面给几个常用脚本模板,复制粘贴改URL就能用。
脚本一:自动刷新+监控页面变化
// ==UserScript==
// @name 页面自动刷新监控
// @match *://目标网站.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const CHECK_INTERVAL = 300000; // 5分钟刷新一次
// 记录页面变化
const prevContent = document.body.innerText.length;
localStorage.setItem('prevLength_'+location.hostname, prevContent);
setTimeout(() => location.reload(), CHECK_INTERVAL);
// 每次加载时检查变化
const oldLen = parseInt(localStorage.getItem('prevLength_'+location.hostname) || 0);
const newLen = document.body.innerText.length;
console.log(`页面内容长度: ${oldLen} -> ${newLen}`);
localStorage.setItem('prevLength_'+location.hostname, newLen);
})();脚本二:自动抓取并导出数据
// ==UserScript==
// @name 自动抓取页面数据
// @match *://*.目标电商网站.com/*
// @grant GM_setClipboard
// ==/UserScript==
(function() {
'use strict';
const items = [];
document.querySelectorAll('.product-item').forEach(el => {
items.push({
title: el.querySelector('.title')?.innerText?.trim(),
price: el.querySelector('.price')?.innerText?.trim(),
time: new Date().toISOString()
});
});
// 存到localStorage累积
const history = JSON.parse(localStorage.getItem('myData') || '[]');
history.push(...items);
localStorage.setItem('myData', JSON.stringify(history.slice(-1000)));
console.log(`抓取${items.length}条,总计${history.length}条`);
})();然后用另一个脚本导出数据:在Tampermonkey里建个脚本,点运行→把localStorage的数据导出为CSV下载。
脚本三:配合SwitchyOmega切换IP
Tampermonkey不能直接控制SwitchyOmega,但能通过触发按键快捷键来间接切换。SwitchyOmega设置里给每个情景模式绑一个快捷键(比如Ctrl+Shift+1切到代理模式1、Ctrl+Shift+2切到代理模式2)。
Tampermonkey脚本在切换前刷新页面重新抓取:
// 定时自动切换代理并重新抓取
(function() {
'use strict';
const proxies = ['Ctrl+Shift+1', 'Ctrl+Shift+2', 'Ctrl+Shift+3'];
let currentIndex = 0;
setInterval(() => {
// 触发快捷键切换代理
const keys = proxies[currentIndex % proxies.length];
// 注意:Tampermonkey不能直接模拟键盘事件触发系统快捷键
// 这里是伪代码,实际需要手动切换或配合AutoHotkey
currentIndex++;
setTimeout(() => location.reload(), 2000);
}, 600000); // 10分钟切换一次
})();Tampermonkey的局限是不能直接模拟系统级按键。完整的自动切换需要配合AutoHotkey(Windows)或Hammerspoon(Mac)做系统级按键模拟——超出了纯浏览器自动化的范围。
Tampermonkey和Selenium的适用边界
| 场景 | Tampermonkey | Selenium |
|---|---|---|
| 单页面定时刷新监控 | ✅ 最简单 | 可以但杀鸡用牛刀 |
| 多页面批量抓取 | ❌ 难管理 | ✅ 天生适合 |
| 模拟点击和填表单 | ✅ | ✅ |
| IP轮换 | 需配合其他工具 | ✅ 原生支持 |
| 无头模式 | ❌ 必须是可见窗口 | ✅ headless模式 |
| 学习门槛 | JavaScript基础 | Python+编程基础 |
Tampermonkey适合轻量场景——监控几个页面、简单的签到和表单填充。量大了还是要学Selenium——参考第24篇(ID 13557)。
常见问题
Tampermonkey脚本和网页自带的JS冲突?
会。某些网站用CSP(内容安全策略)限制外部脚本注入。Tampermonkey在@match的域名下自动运行——如果页面JS对你的修改做了防护,脚本可能不生效。用@grant none可以降低冲突概率。
抓取的数据怎么导出来?
Tampermonkey的GM_setValue存数据到扩展存储→写一个showData()函数把数据渲染到页面上的弹窗里→复制粘贴出来。或者直接在浏览器Console里JSON.parse(localStorage.getItem(‘myData’))手动导出。
可以24小时挂着自动跑吗?
理论上可以但实际不行——浏览器页面可能因为内存泄漏崩溃、电脑休眠后脚本停止、网络波动导致页面加载失败。长时间自动化还是用Python+Selenium跑在服务器上更稳定。






