一个脚本帮成为本论坛争着邀请的人【自动受邀脚本】

花了点时间写了一个脚本,自动获取页面上的邀请并且成为他的受邀用户。
有需要自取(狗头)
替换邮箱和用户名即可使用

// ==UserScript==
// @name         linuxdo自动受邀
// @namespace    http://tampermonkey.net/
// @description  自动查找页面上的邀请链接并接受邀请
// @version      2024-03-11
// @author       刀削金坷垃
// @match        https://linux.do/*
// @icon         https://linux.do/uploads/default/original/1X/3a18b4b0da3e8cf96f7eea15241c3d251f28a39b.png
// @require      https://unpkg.com/[email protected]/dist/jquery.min.js
// @grant        GM_log
// @grant        GM_notification
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            const event = new CustomEvent('DOMSubtreeModified');
            document.dispatchEvent(event);
        });
    });

    observer.observe(document, {
        childList: true,
        subtree: true
    });

    document.addEventListener('DOMSubtreeModified', function() {
        let allInvites=[...document.querySelectorAll('a')].map(a=>a.href).filter(href=>href.includes("https://linux.do/invites/")).map(href=>href.replace("https://linux.do/invites/",""));
        let store = GM_getValue("InvitesCodeList", new Set());
        let csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
        let username = '填你自己的用户名';//document.getElementById("current-user").getElementsByClassName("avatar")[0].title ;
        let timezone='Asia/Shanghai';
        let email='你自己的邮箱';
        const sendRequestsWithDelay = (urlList) => {
            let index = 0;
            const intervalId = setInterval(() => {
                if (index < urlList.length) {
                    sendRequest(urlList[index]);
                    index++;
                } else {
                    clearInterval(intervalId);
                }
            }, 1000); // 1000 毫秒 = 1 秒
        };

        sendRequestsWithDelay(allInvites);
        let sendRequest=(code)=>{
            let hasInvites=GM_getValue(code);

            if(!hasInvites){
                GM_setValue(code,true);
                const xhr = new XMLHttpRequest();

                // 构建请求URL
                const apiUrl = `https://linux.do/invites/show/${code}.json`;

                // 设置请求方法和URL
                xhr.open('PUT', apiUrl, true);

                // 设置请求头
                xhr.setRequestHeader('accept', '*/*');
                xhr.setRequestHeader('accept-language', 'zh-CN,zh;q=0.9,en;q=0.8');
                xhr.setRequestHeader('cache-control', 'no-cache');
                xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
                xhr.setRequestHeader('discourse-logged-in', 'true');
                xhr.setRequestHeader('discourse-present', 'true');
                xhr.setRequestHeader('pragma', 'no-cache');
                xhr.setRequestHeader('x-csrf-token', csrfToken);
                xhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');

                // 处理请求完成后的回调函数
                xhr.onload = function () {
                    if (xhr.status >= 200 && xhr.status < 300) {
                        console.log('PUT请求成功:', xhr.responseText);
                        // 处理返回的数据
                    } else {
                        console.error('PUT请求失败. 状态码:', xhr.status, '错误信息:', xhr.statusText);
                        // 处理错误
                    }
                };

                // 处理网络错误的回调函数
                xhr.onerror = function () {
                    console.error('网络错误发生.');
                    // 处理网络错误
                };

                // 构建请求体数据
                const requestData = `username=${username}&timezone=${timezone}&email=${email}`;

                // 发送请求并将数据作为字符串发送
                xhr.send(requestData);

            }
        }


    });


})();
2 个赞

6,我感觉没人需要 :rofl:

1 个赞

在这个帖子里面一跑,轻轻松松几十条 :thinking:

1 个赞

能用来洗别人的形状吗

1 个赞

新用户可能需要吧

1 个赞

你搁那儿刷他们名额呢

神奇的脚本又出现了

有人为了避坑,也有人只为跳坑,为你们的精神打call

什么稀奇古怪的的东西

洗不了,比如我,彻底打上了福利姬的烙印 :sweat_smile:

试试天行健的,我用他的洗掉了福利姬 :face_holding_back_tears:
后果是洗不掉天行健的了

你可能邀请人已经变成了别人的 但显示的还是苏菲的