练手写的一个简单 JS

(function() {
    'use strict';

    // baseURI 提取用户名
    function extractUsernameFromBaseURI() {
        const baseURI = document.baseURI;
        const usernameMatch = baseURI.match(/\/u\/([^\/]+)\//);
        if (usernameMatch) {
            return usernameMatch[1];
        } else {
            console.error('Failed to extract user account from baseURI.');
            return null;
        }
    }

    // 随机后缀
    function randomEmailDomain() {
        const domains = [
            '126.com', '139.com', '163.com', '189.cn', 'aliyun.com', 'apache.org',
            'deepseek.com', 'edu.cn', 'edu.hk', 'edu.mo', 'edu.tw', 'foxmail.com',
            'gmail.com', 'gov.cn', 'yahoo.fr', 'yahoo.jp', 'gov.tw', 'gov.hk', 'gov.mo', 'qq.com', 'sina.cn', 'sina.com',
            'sohu.com', 'xiaomi.com', 'yahoo.com', 'yeah.net'
        ];
        const index = Math.floor(Math.random() * domains.length);
        return domains[index];
    }

    // 随机字符串
    function generateRandomString() {
        const length = Math.floor(Math.random() * 8) + 5; // 生成长度 5 到 12
        const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&*+-.=?@^_~';
        let randomStr = '';
        for (let i = 0; i < length; i++) {
            randomStr += chars.charAt(Math.floor(Math.random() * chars.length));
        }
        return randomStr;
    }

    // 本地化文本
    function getEmailLabel() {
        const lang = navigator.language;
        switch (lang) {
            case 'zh-CN': return '电子邮件';
            case 'zh-TW':
            case 'zh-HK':
            case 'zh-MO': return '電子郵件';
            case 'ko-KP':
            case 'ko-KR': return '이메일';
            case 'ja': return 'メール';
            case 'en': return 'Email';
            case 'fr': return 'Courriel';
            case 'ru': return 'Электронная почта';
            default: return 'Email';
        }
    }

    // 插入邮箱
    function insertEmail(email) {
        const trustLevelElement = document.querySelector('dd.trust-level');
        if (trustLevelElement) {
            const emailDiv = document.createElement('div');
            emailDiv.innerHTML = `<dt class="email">${getEmailLabel()}</dt><dd class="email">${email}</dd>`;
            const outerDiv = trustLevelElement.closest('div');
            if (outerDiv) {
                outerDiv.parentNode.insertBefore(emailDiv, outerDiv.nextSibling);
                console.log("Email inserted:", email);
            } else {
                console.error("Failed to find outer <div> for trust-level.");
            }
        } else {
            console.error("Trust-level element not found.");
        }
    }

    // 获取生日
    function fetchUserBirthdayAndCreateEmail(username) {
        fetch(`https://linux.do/u/${username}.json`)
        .then(response => response.json())
        .then(data => {
            if (!data.user || !data.user.birthdate) {
                console.error("No birthdate found for user:", username);
                return;
            }
            const birthdateMatch = data.user.birthdate.match(/-(\d{2})(\d{2})$/); // 获取月日
            let emailUsername = username;

            if (Math.random() < 0.45 && birthdateMatch) {
                emailUsername += `_${birthdateMatch[1]}${birthdateMatch[2]}`; // 添加生日
            }

            if (Math.random() < 0.35) {
                const randomStr = generateRandomString();
                emailUsername += `_${randomStr}`; // 添加随机字符串
            }

            const email = `${emailUsername}@${randomEmailDomain()}`;
            insertEmail(email);
        })
        .catch(error => console.error("Failed to fetch user data:", error));
    }

    // 执行函数
    const username = extractUsernameFromBaseURI();
    if (username) {
        fetchUserBirthdayAndCreateEmail(username);
    }
})();

在任意用户的个人主页时,使用「控制台」执行本脚本即可:
你也可以拥有随便看别人邮箱的能力。(假的啦)


有没有人拿这个和 linuxdo-fakeKing 脚本 MIX 一下试试?


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:37:24
7 Likes

前排!!!!

前排围观 感谢佬分享

1 Like

帅啊我靠!!

1 Like

你有没有注意到被挂的是你?


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:34:53
3 Likes

哈比太快了 我就切了一下

1 Like

你似乎回复错人了


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:35:00
1 Like

哈哈,好快的行动

1 Like

随机整个邮箱?

没事意思传达到就好了,你下面的小尾巴咋来的

1 Like

围观,感谢分享

1 Like

用户名 + _<随机字符串>(45% 概率)+ _<生日>(35% 概率) @ 随机后缀


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:40:39
2 Likes

tieba13


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:36:14
2 Likes

挺牛的,抓JSON解析一下再插入到 标签内

小尾巴小尾巴


「我不会忘记的,永远地轮回也好、命运也好、神也好,都不会输,不会输的。因为我们的心灵是相通的。」——《神无月的巫女》

本来想用和 Discourse IP 一样的 iframe 法获取生日(差不多算逆向论坛了),但效率不高就干脆用了内建的 JSON。


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:37:12
1 Like

我是故意的 :joy:
而且 JS 也没有那个能力自动爬论坛获取已公开的邮箱地址啊


Google Chrome 127 | Windows 10 | Taiwan, Taipei | 2024/08/19 16:38:11
1 Like

太强了吧大佬

让我试试哈。


「不要把对方当做陌生人,而是凝视对方的双眼,真心呼唤对方的名字,从这一点做起就足够了。」——《魔法少女奈叶》