您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Converts an email to duckgo anonymous email format, now with minimize functionality
当前为
// ==UserScript== // @name Convert Email Address to Duckduckgo Anonymous email format // @namespace http://tampermonkey.net/ // @author aspen138 // @version 1.1.2 // @description Converts an email to duckgo anonymous email format, now with minimize functionality // @match https://126.com/* // @match https://163.com/* // @match https://abv.bg/* // @match https://adelphia.net/* // @match https://aim.com/* // @match https://alice.it/* // @match https://aol.com/* // @match https://att.net/* // @match https://bellsouth.net/* // @match https://bigpond.com/* // @match https://bluewin.ch/* // @match https://blueyonder.co.uk/* // @match https://bol.com.br/* // @match https://btinternet.com/* // @match https://charter.net/* // @match https://comcast.net/* // @match https://cox.net/* // @match https://cs.com/* // @match https://earthlink.net/* // @match https://email.mail.com/* // @match https://embarqmail.com/* // @match https://excite.com/* // @match https://exmail.qq.com/* // @match https://fastmail.com/* // @match https://free.fr/* // @match https://frontiernet.net/* // @match https://ge.com/* // @match https://gmx.com/* // @match https://hetnet.nl/* // @match https://home.nl/* // @match https://hotmail.com/* // @match https://hp.com/* // @match https://icloud.com/mail/* // @match https://ig.com.br/* // @match https://insightbb.co/* // @match https://juno.com/* // @match https://laposte.net/* // @match https://libero.it/* // @match https://mac.com/* // @match https://mail.aol.com/* // @match https://mail.apple.com/* // @match https://mail.com/* // @match https://mail.fastmail.com/* // @match https://mail.gmx.com/* // @match https://mail.proton.me/* // @match https://mail.qq.com/* // @match https://mail.ru/* // @match https://mail.sina.com/* // @match https://mail.sina.com.cn/* // @match https://mail.yahoo.com/* // @match https://mail.yandex.com/* // @match https://mail.zoho.com/* // @match https://mail.163.com/* // @match https://mail.126.com/* // @match https://mchsi.com/* // @match https://me.com/* // @match https://mindspring.com/* // @match https://msn.com/* // @match https://netscape.net/* // @match https://netzero.com/* // @match https://netzero.net/* // @match https://ntlworld.com/* // @match https://optonline.net/* // @match https://optusnet.com.au/* // @match https://orange.fr/* // @match https://pacbell.net/* // @match https://peoplepc.com/* // @match https://planet.nl/* // @match https://prodigy.net/* // @match https://proton.me/* // @match https://q.com/* // @match https://qq.com/* // @match https://rediffmail.com/* // @match https://roadrunner.com/* // @match https://rocketmail.com/* // @match https://rogers.com/* // @match https://sbcglobal.net/* // @match https://shaw.ca/* // @match https://sky.com/* // @match https://skynet.be/* // @match https://sympatico.ca/* // @match https://talktalk.net/* // @match https://telenet.be/* // @match https://telus.net/* // @match https://terra.com.br/* // @match https://tiscali.co.uk/* // @match https://tiscali.it/* // @match https://t-online.de/* // @match https://trainingelite.com/* // @match https://uol.com.br/* // @match https://us.army.mil/* // @match https://verizon.net/* // @match https://videotron.ca/* // @match https://virgilio.it/* // @match https://wanadoo.fr/* // @match https://web.de/* // @match https://webtv.net/* // @match https://windstream.net/* // @match https://wp.pl/* // @match https://xtra.co.nz/* // @match https://yahoo.ca/* // @match https://yahoo.co.id/* // @match https://yahoo.co.in/* // @match https://yahoo.co.uk/* // @match https://yahoo.com/* // @match https://yahoo.com.ar/* // @match https://yahoo.com.au/* // @match https://yahoo.com.br/* // @match https://yahoo.com.cn/* // @match https://yahoo.com.mx/* // @match https://yahoo.com.sg/* // @match https://yahoo.de/* // @match https://yahoo.es/* // @match https://yahoo.fr/* // @match https://yahoo.in/* // @match https://yahoo.it/* // @match https://yandex.com/* // @match https://yandex.ru/* // @match https://ymail.com/* // @match https://zoho.com/mail/* // @icon data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBmaWxsPSIjZGU1ODMzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02NCAxMjhjMzUuMzQ2IDAgNjQtMjguNjU0IDY0LTY0IDAtMzUuMzQ2LTI4LjY1NC02NC02NC02NFMwIDI4LjY1NCAwIDY0YzAgMzUuMzQ2IDI4LjY1NCA2NCA2NCA2NHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogIDxwYXRoIGZpbGw9IiNkZGQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTczIDExMS43NWMwLS41LjEyMy0uNjE0LTEuNDY3LTMuNzgyLTQuMjI0LTguNDU5LTguNDY5LTIwLjM4NC02LjUzOC0yOC4wNzUuMzUyLTEuMzk3LTMuOTc5LTUxLjc0NC03LjA0LTUzLjM2NS0zLjQwMy0xLjgxMy03LjU5LTQuNjktMTEuNDE5LTUuMzMtMS45NDMtLjMxLTQuNDktLjE2NC02LjQ4Mi4xMDUtLjM1NC4wNDctLjM2OC42ODQtLjAzLjc5OCAxLjMwNy40NDMgMi44OTUgMS4yMTIgMy44MyAyLjM3NS4xNzguMjItLjA2LjU2Ni0uMzQyLjU3Ny0uODgyLjAzMi0yLjQ4Mi40MDItNC41OTMgMi4xOTUtLjI0NC4yMDctLjA0Mi41OTIuMjczLjUzIDQuNTM2LS44OTcgOS4xNy0uNDU1IDExLjkgMi4wMjcuMTc3LjE2LjA4NC40NS0uMTQ3LjUxMi0yMy42OTQgNi40NC0xOS4wMDQgMjcuMDUtMTIuNjk2IDUyLjM0NCA1LjYxOSAyMi41MyA3LjczMyAyOS43OTIgOC40IDMyLjAwNGEuNzE4LjcxOCAwIDAgMCAuNDIzLjQ2N0M1NS4yMjggMTE4LjM4IDczIDExOC41MjQgNzMgMTEzeiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgPHBhdGggZmlsbD0iI2ZmZiIgZD0iTTc2LjI1IDExNi41Yy0yLjg3NSAxLjEyNS04LjUgMS42MjUtMTEuNzUgMS42MjUtNC43NjUgMC0xMS42MjUtLjc1LTE0LjEyNS0xLjg3NS0xLjU0NC00Ljc1MS02LjE2NS0xOS40OC0xMC43MjgtMzguMTg1bC0uNDQ3LTEuODI3LS4wMDMtLjAxNWMtNS40MjUtMjIuMTU2LTkuODU1LTQwLjI1MyAxNC40MjctNDUuOTM4LjIyMi0uMDUyLjMzLS4zMTcuMTgzLS40OTItMi43ODYtMy4zMDUtOC4wMDUtNC4zODgtMTQuNjA0LTIuMTExLS4yNy4wOTMtLjUwNi0uMTgtLjMzOC0uNDEyIDEuMjk0LTEuNzgzIDMuODIzLTMuMTU1IDUuMDcyLTMuNzU2LjI1OC0uMTI0LjI0Mi0uNTAyLS4wMzEtLjU4OGEyNy44NzkgMjcuODc5IDAgMCAwLTMuNzcxLS45Yy0uMzctLjA1OS0uNDA0LS42OTMtLjAzMi0uNzQzIDkuMzU2LTEuMjU5IDE5LjEyNSAxLjU1IDI0LjAyOCA3LjcyNmEuMzI2LjMyNiAwIDAgMCAuMTg1LjExNGMxNy45NTMgMy44NTYgMTkuMjM5IDMyLjIzNSAxNy4xNyAzMy41MjgtLjQwNy4yNTUtMS43MTQuMTA4LTMuNDM4LS4wODQtNi45ODUtLjc4Mi0yMC44MTgtMi4zMy05LjQwMSAxOC45NDcuMTEzLjIxLS4wMzcuNDg4LS4yNzIuNTI1LTYuNDM4IDEgMS44MTIgMjEuMTczIDcuODc1IDM0LjQ2MXoiLz4KICA8cGF0aCBmaWxsPSIjM2NhODJiIiBkPSJNODQuMjggOTAuNjk4Yy0xLjM2Ny0uNjMzLTYuNjIyIDMuMTM1LTEwLjExIDYuMDI4LS43MjgtMS4wMzEtMi4xMDMtMS43OC01LjIwMy0xLjI0Mi0yLjcxMy40NzItNC4yMTEgMS4xMjYtNC44OCAyLjI1NC00LjI4My0xLjYyMy0xMS40ODgtNC4xMy0xMy4yMjktMS43MS0xLjkwMiAyLjY0Ni40NzYgMTUuMTYxIDMuMDAzIDE2Ljc4NiAxLjMyLjg0OSA3LjYzLTMuMjA4IDEwLjkyNi02LjAwNS41MzIuNzQ5IDEuMzg4IDEuMTc4IDMuMTQ4IDEuMTM3IDIuNjYyLS4wNjIgNi45NzktLjY4MSA3LjY0OS0xLjkyMS4wNC0uMDc1LjA3NS0uMTY0LjEwNS0uMjY2IDMuMzg4IDEuMjY2IDkuMzUgMi42MDYgMTAuNjgxIDIuNDA2IDMuNDcxLS41MjEtLjQ4My0xNi43MjMtMi4wOS0xNy40Njd6Ii8+CiAgPHBhdGggZmlsbD0iIzRjYmEzYyIgZD0iTTc0LjQ5IDk3LjA5N2MuMTQ0LjI1Ni4yNi41MjYuMzU4LjguNDgzIDEuMzUyIDEuMjcgNS42NDguNjc0IDYuNzA5LS41OTUgMS4wNjItNC40NTkgMS41NzQtNi44NDMgMS42MTVzLTIuOTItLjgzMS0zLjQwMy0yLjE4MWMtLjM4Ny0xLjA4MS0uNTc3LTMuNjIxLS41NzItNS4wNzUtLjA5OC0yLjE1OC42OS0yLjkxNiA0LjMzNC0zLjUwNiAyLjY5Ni0uNDM2IDQuMTIyLjA3MSA0Ljk0NC45NCAzLjgyOC0yLjg1NyAxMC4yMTUtNi44ODkgMTAuODM4LTYuMTUyIDMuMTA2IDMuNjc0IDMuNDk5IDEyLjQyIDIuODI2IDE1LjkzOS0uMjIgMS4xNTEtMTAuNTA1LTEuMTM5LTEwLjUwNS0yLjM4IDAtNS4xNTItMS4zMzctNi41NjUtMi42NS02Ljcxem0tMjIuNTMtMS42MDljLjg0My0xLjMzMyA3LjY3NC4zMjQgMTEuNDI0IDEuOTkzIDAgMC0uNzcgMy40OTEuNDU2IDcuNjA0LjM1OSAxLjIwMy04LjYyNyA2LjU1OC05LjggNS42MzctMS4zNTUtMS4wNjUtMy44NS0xMi40MzItMi4wOC0xNS4yMzR6Ii8+CiAgPHBhdGggZmlsbD0iI2ZjMyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNTUuMjY5IDY4LjQwN2MuNTUzLTIuNDA0IDMuMTI3LTYuOTMyIDEyLjMyMS02LjgyMiA0LjY0OC0uMDIgMTAuNDIyLS4wMDMgMTQuMjUtLjQzN2E1MS4zMTIgNTEuMzEyIDAgMCAwIDEyLjcyNi0zLjA5NWMzLjk4LTEuNTE5IDUuMzkyLTEuMTggNS44ODctLjI3MS41NDQuOTk4LS4wOTcgMi43MjEtMS40ODggNC4zMDgtMi42NTYgMy4wMzEtNy40MzEgNS4zOC0xNS44NjUgNi4wNzctOC40MzMuNjk3LTE0LjAyLTEuNTY2LTE2LjQyNSAyLjExOC0xLjAzOCAxLjU4OC0uMjM2IDUuMzMyIDcuOTIgNi41MTEgMTEuMDIgMS41OSAyMC4wNzItMS45MTcgMjEuMTkuMjAxcy01LjMyMyA2LjQyOC0xNi4zNjIgNi41MThjLTExLjAzOS4wOS0xNy45MzQtMy44NjUtMjAuMzc5LTUuODMtMy4xMDItMi40OTUtNC40OS02LjEzMy0zLjc3NS05LjI3OHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgogIDxnIGZpbGw9IiMxNDMwN2UiIG9wYWNpdHk9Ii44Ij4KICAgIDxwYXRoIGQ9Ik02OS4zMjcgNDIuMTI3Yy42MTYtMS4wMDggMS45ODEtMS43ODYgNC4yMTYtMS43ODYgMi4yMzQgMCAzLjI4NS44ODkgNC4wMTMgMS44OC4xNDguMjAyLS4wNzYuNDQtLjMwNi4zNGE1OS44NjkgNTkuODY5IDAgMCAxLS4xNjgtLjA3M2MtLjgxNy0uMzU3LTEuODItLjc5NS0zLjU0LS44Mi0xLjgzOC0uMDI2LTIuOTk3LjQzNS0zLjcyNy44MzEtLjI0Ni4xMzQtLjYzNC0uMTMzLS40ODgtLjM3MnptLTI1LjE1NyAxLjI5YzIuMTctLjkwNyAzLjg3Ni0uNzkgNS4wODEtLjUwNC4yNTQuMDYuNDMtLjIxMy4yMjgtLjM3Ny0uOTM2LS43NTUtMy4wMy0xLjY5Mi01Ljc2MS0uNjc0LTIuNDM3LjkwOS0zLjU4NSAyLjc5Ni0zLjU5MiA0LjAzOC0uMDAyLjI5Mi42LjMxNy43NTYuMDcuNDItLjY3IDEuMTItMS42NDYgMy4yODktMi41NTN6Ii8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03NS40NCA1NS45MmEzLjQ3IDMuNDcgMCAwIDEtMy40NzMtMy40NjIgMy40NyAzLjQ3IDAgMCAxIDMuNDczLTMuNDYgMy40NyAzLjQ3IDAgMCAxIDMuNDc1IDMuNDYgMy40NyAzLjQ3IDAgMCAxLTMuNDc0IDMuNDYyem0yLjQ0Ny00LjYwOGEuODk5Ljg5OSAwIDAgMC0xLjc5OSAwYzAgLjQ5NC40MDUuODk1LjkuODk1LjQ5OSAwIC45LS40LjktLjg5NXptLTI1LjQ2NCAzLjU0MmE0LjA0MiA0LjA0MiAwIDAgMS00LjA0OSA0LjAzNyA0LjA0NSA0LjA0NSAwIDAgMS00LjA1LTQuMDM3IDQuMDQ1IDQuMDQ1IDAgMCAxIDQuMDUtNC4wMzcgNC4wNDUgNC4wNDUgMCAwIDEgNC4wNSA0LjAzN3ptLTEuMTkzLTEuMzM4YTEuMDUgMS4wNSAwIDAgMC0yLjA5NyAwIDEuMDQ3IDEuMDQ3IDAgMCAwIDIuMDk3IDB6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz4KICA8L2c+CiAgPHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNjQgMTE3Ljc1YzI5LjY4NSAwIDUzLjc1LTI0LjA2NSA1My43NS01My43NVM5My42ODUgMTAuMjUgNjQgMTAuMjUgMTAuMjUgMzQuMzE1IDEwLjI1IDY0IDM0LjMxNSAxMTcuNzUgNjQgMTE3Ljc1em0wIDVjMzIuNDQ3IDAgNTguNzUtMjYuMzAzIDU4Ljc1LTU4Ljc1Uzk2LjQ0NyA1LjI1IDY0IDUuMjUgNS4yNSAzMS41NTMgNS4yNSA2NCAzMS41NTMgMTIyLjc1IDY0IDEyMi43NXoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgo8L3N2Zz4K // @iconbackup https://ssl.gstatic.com/ui/v1/icons/mail/rfr/gmail.ico // @license MIT // @grant GM_getValue // @grant GM_setValue // ==/UserScript== (function() { 'use strict'; // Retrieve a stored value for demonstration (not essential for minimizing logic) const testStoredSendTo = GM_getValue('whatever', ''); console.log("testStoredSendTo", testStoredSendTo); // Create a container for the floating box const container = document.createElement('div'); container.style.position = 'fixed'; container.style.bottom = '20px'; container.style.left = '20px'; container.style.zIndex = '9999'; container.style.padding = '10px'; container.style.backgroundColor = '#fff'; container.style.border = '1px solid #ccc'; container.style.borderRadius = '5px'; container.style.boxShadow = '0 0 5px rgba(0,0,0,0.3)'; container.style.fontFamily = 'Arial, sans-serif'; container.style.maxWidth = '280px'; // Title or heading const heading = document.createElement('h4'); heading.textContent = 'Email Converter'; heading.style.margin = '0 0 10px 0'; container.appendChild(heading); // Close (minimize) button const minimizeButton = document.createElement('button'); minimizeButton.textContent = 'X'; minimizeButton.style.position = 'absolute'; minimizeButton.style.top = '5px'; minimizeButton.style.right = '10px'; minimizeButton.style.cursor = 'pointer'; minimizeButton.style.border = 'none'; minimizeButton.style.background = 'none'; minimizeButton.style.fontSize = '16px'; container.appendChild(minimizeButton); // This button will appear when the container is minimized const restoreButton = document.createElement('button'); restoreButton.textContent = 'Email Converter'; restoreButton.style.position = 'fixed'; restoreButton.style.left = '0'; restoreButton.style.bottom = '20px'; restoreButton.style.zIndex = '9999'; restoreButton.style.padding = '6px 12px'; restoreButton.style.cursor = 'pointer'; restoreButton.style.border = '1px solid #ccc'; restoreButton.style.borderRadius = '5px'; restoreButton.style.fontFamily = 'Arial, sans-serif'; restoreButton.style.backgroundColor = '#fff'; restoreButton.style.boxShadow = '0 0 5px rgba(0,0,0,0.3)'; // Initially hidden // restoreButton.style.display = 'none'; container.style.display = 'none'; restoreButton.style.display = 'block'; document.body.appendChild(restoreButton); // When the user clicks the "X", hide the container and show the restore button minimizeButton.addEventListener('click', () => { container.style.display = 'none'; restoreButton.style.display = 'block'; }); // When the user clicks restore, show the container and hide the restore button restoreButton.addEventListener('click', () => { container.style.display = 'block'; restoreButton.style.display = 'none'; }); // Wrapper to neatly organize form elements const formWrapper = document.createElement('div'); formWrapper.style.display = 'flex'; formWrapper.style.flexDirection = 'column'; formWrapper.style.gap = '5px'; // Retrieve stored values (if any) const storedSendTo = GM_getValue('converterSendTo', ''); const storedDdgo = GM_getValue('converterDdgo', ''); // Label and input for "send email to who?" const labelSendTo = document.createElement('label'); labelSendTo.textContent = 'Send email to who: '; labelSendTo.style.marginRight = '10px'; const inputSendTo = document.createElement('input'); inputSendTo.type = 'text'; inputSendTo.placeholder = 'e.g. [email protected]'; inputSendTo.style.width = '250px'; inputSendTo.value = storedSendTo; const rowSendTo = document.createElement('div'); rowSendTo.appendChild(labelSendTo); rowSendTo.appendChild(inputSendTo); // Label and input for "your ddgo mail?" const labelDdgo = document.createElement('label'); labelDdgo.textContent = 'Your DuckduckGo address: '; labelDdgo.style.marginRight = '10px'; const inputDdgo = document.createElement('input'); inputDdgo.type = 'text'; inputDdgo.placeholder = 'e.g. [email protected]'; inputDdgo.style.width = '250px'; inputDdgo.value = storedDdgo; const rowDdgo = document.createElement('div'); rowDdgo.appendChild(labelDdgo); rowDdgo.appendChild(inputDdgo); // Convert button const buttonConvert = document.createElement('button'); buttonConvert.textContent = 'Convert'; buttonConvert.style.marginRight = '10px'; buttonConvert.style.cursor = 'pointer'; buttonConvert.style.width = '250px'; // Output field for converted email const labelOutput = document.createElement('label'); labelOutput.textContent = 'Converted: '; labelOutput.style.marginRight = '10px'; const outputEmail = document.createElement('input'); outputEmail.type = 'text'; outputEmail.readOnly = true; outputEmail.style.width = '250px'; const rowOutput = document.createElement('div'); rowOutput.appendChild(labelOutput); rowOutput.appendChild(outputEmail); // Feedback or error message area const feedback = document.createElement('p'); feedback.style.color = 'red'; feedback.style.fontSize = '14px'; feedback.style.margin = '5px 0 0 0'; feedback.style.minHeight = '18px'; feedback.textContent = ''; // Conversion function buttonConvert.addEventListener('click', () => { const originalEmail = inputSendTo.value.trim(); const ddgoEmail = inputDdgo.value.trim(); let errorMessage = ''; // Simple validations if (!originalEmail) { errorMessage = 'Please enter an email address to convert.'; } else if (!ddgoEmail) { errorMessage = 'Please enter your DDG address.'; } // Handle any errors if (errorMessage) { feedback.textContent = errorMessage; outputEmail.value = ''; return; } // Replace '@' with '_at_' and append the ddgo email const converted = originalEmail.replace(/@/g, '_at_') + '_' + ddgoEmail; outputEmail.value = converted; feedback.textContent = ''; // Save inputs to Tampermonkey storage GM_setValue('converterSendTo', originalEmail); GM_setValue('converterDdgo', ddgoEmail); }); // Assemble elements in the container formWrapper.appendChild(rowSendTo); formWrapper.appendChild(rowDdgo); formWrapper.appendChild(buttonConvert); formWrapper.appendChild(rowOutput); formWrapper.appendChild(feedback); container.appendChild(formWrapper); // Finally, attach the container to document body document.body.appendChild(container); })();