Tampermonkey脚本中tempEmail、tempPass值随机变动,如何设置为固定静态值?
问题原因
- 你的脚本设置了全局匹配规则
@match https://*/*,Tampermonkey会在每一个符合匹配规则的页面加载时,完整执行一次整个脚本代码。你把随机生成邮箱、密码的逻辑写在全局作用域,每次脚本执行都会重新运行随机生成逻辑,自然每次拿到的tempEmail、tempPass都不一样。 - const/let/var只是当前脚本执行上下文内的变量声明规则,哪怕你用const声明,脚本重新执行时整个上下文都会重建,相当于变量重新初始化,根本不会用到上一次执行时的值。
解决方案
用Tampermonkey提供的持久化存储API GM_getValue/GM_setValue 存储生成的账号密码,只要你不主动删除存储的值,不管脚本重载多少次,读取到的都是第一次生成的固定值:
- 先在脚本头增加
@grant GM_getValue权限声明 - 调整变量初始化逻辑:先读取存储里的账号密码,不存在才生成新值并存入存储
修正后完整代码
// ==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
相关产品推荐
相关产品推荐

