代理IP怎么配Tampermonkey做自动化?浏览器脚本注入和定时任务

Tampermonkey自动刷新、抓取数据、定时切换IP三个脚本模板和Selenium适用对比
发布于
2

不想装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跑在服务器上更稳定。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

第一次接触代理IP,看到一堆术语——SOCKS5、HTTP代理、住宅IP、静态IP——不知所云。本文用最直白的语言把代理IP是什么、怎么选类型、到手怎么配置、配置完怎么验证说清楚。零基础也能看懂。 代理IP到底是什么 你在网上做的每一件事—

数据采集被封IP的根本原因不是用了代理,是请求频率不像正常人。人浏览网页是几秒一个页面+随机停顿,你的脚本是每秒100个请求+毫秒级响应。频率控制的目标是用尽可能快的速度完成采集任务同时让请求模式看起来像人。 什么样的频率会被判定为异常 风