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

Tampermonkey脚本中tempEmail、tempPass值随机变动,如何设置为固定静态值?

问题原因
  • 你的脚本设置了全局匹配规则 @match https://*/*,Tampermonkey会在每一个符合匹配规则的页面加载时,完整执行一次整个脚本代码。你把随机生成邮箱、密码的逻辑写在全局作用域,每次脚本执行都会重新运行随机生成逻辑,自然每次拿到的tempEmail、tempPass都不一样。
  • const/let/var只是当前脚本执行上下文内的变量声明规则,哪怕你用const声明,脚本重新执行时整个上下文都会重建,相当于变量重新初始化,根本不会用到上一次执行时的值。
解决方案

用Tampermonkey提供的持久化存储API GM_getValue/GM_setValue 存储生成的账号密码,只要你不主动删除存储的值,不管脚本重载多少次,读取到的都是第一次生成的固定值:

  1. 先在脚本头增加 @grant GM_getValue 权限声明
  2. 调整变量初始化逻辑:先读取存储里的账号密码,不存在才生成新值并存入存储
修正后完整代码
// ==UserScript==
// @name         Test
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*/*
// @grant window.close
// @grant window.focus
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==

const domains = ["@gmail.com", "@hotmail.com", "@outlook.com"];

// 先从存储读值,没有值再生成并存储
let tempEmail = GM_getValue("saved_email", "");
let tempPass = GM_getValue("saved_pass", "");

if (!tempEmail || !tempPass) {
    // 补充原代码缺失的getRandomInt函数
    function getRandomInt(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    function makeid(length) {
        var result = '';
        var characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
        var charactersLength = characters.length;
        for (var i = 0; i < length; i++) {
            result += characters.charAt(Math.floor(Math.random() * charactersLength));
        }
        return result;
    }

    const username = makeid(getRandomInt(6, 12));
    tempEmail = username + domains[Math.floor(Math.random() * domains.length)];
    tempPass = makeid(5);
    // 存入持久化存储
    GM_setValue("saved_email", tempEmail);
    GM_setValue("saved_pass", tempPass);
}

function sendMessage() {
    console.log(tempEmail + ":" + tempPass);
}

(function() {
    'use strict';
    if (/SIGN UP WITH YOUR EMAIL/i.test(document.body.innerHTML)) {
        // 此处填写你的站点注册自动化逻辑
    } 
})();
注意事项
  • 如果需要重新生成新的固定账号密码,打开Tampermonkey的脚本编辑页,切换到「已存储值」标签,删除saved_email和saved_pass两条记录即可,下次脚本运行会自动生成新值并存储。
  • 如果需要不同站点用不同的固定账号,可以把存储的key加上站点标识,比如GM_getValue(location.host + "_email", "")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:06:03