sandbox server finder [demo]

find private sandbox servers by connecting with iframe (use chrome extension for captcha solver)

// ==UserScript==
// @name         sandbox server finder [demo]
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  find private sandbox servers by connecting with iframe (use chrome extension for captcha solver)
// @author       r!PsAw
// @match        https://diep.io
// @match        https://diep.io/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=diep.io
// @grant        none
// @license      MIT
// ==/UserScript==

//I have to fix the filtering logic between valid and invalid server, because right now it just adds all links

let iframes_count = 0;
let current_num;

function createButtonContainer() {
    const container = window.document.createElement("div");
    container.id = "link-container";
    container.style.position = "fixed";
    container.style.top = "10px";
    container.style.right = "10px";
    container.style.width = "300px";
    container.style.height = "400px";
    container.style.overflowY = "scroll";
    container.style.border = "2px solid #ccc";
    container.style.borderRadius = "10px";
    container.style.backgroundColor = "#fff";
    container.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.2)";
    container.style.padding = "10px";
    container.style.zIndex = "10000";

    // Add the container to the document body
    window.document.body.appendChild(container);
}

function new_iframe(link) {
    iframes_count++;

    // Create a container for the iframe
    const iframeContainer = document.createElement("div");
    iframeContainer.style.position = "fixed";
    iframeContainer.style.bottom = "10px";
    iframeContainer.style.right = "10px";
    iframeContainer.style.width = "25%";
    iframeContainer.style.height = "20%";
    iframeContainer.style.border = "2px solid #ccc";
    iframeContainer.style.borderRadius = "10px";
    iframeContainer.style.overflow = "hidden";
    iframeContainer.style.backgroundColor = "#fff";
    iframeContainer.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.2)";
    iframeContainer.style.zIndex = "10000";

    // Create the iframe
    const iframe = document.createElement("iframe");
    iframe.src = link;
    iframe.style.width = "100%";
    iframe.style.height = "100%";
    iframe.style.border = "none";

    // Add a close button
    const closeButton = document.createElement("button");
    closeButton.id = `close-${iframes_count}`;
    closeButton.innerText = "×";
    closeButton.style.position = "absolute";
    closeButton.style.top = "5px";
    closeButton.style.right = "5px";
    closeButton.style.border = "none";
    closeButton.style.backgroundColor = "#f44336";
    closeButton.style.color = "#fff";
    closeButton.style.borderRadius = "50%";
    closeButton.style.width = "24px";
    closeButton.style.height = "24px";
    closeButton.style.cursor = "pointer";
    closeButton.style.fontSize = "16px";
    closeButton.style.textAlign = "center";
    closeButton.style.lineHeight = "20px";
    closeButton.style.boxShadow = "0 2px 4px rgba(0, 0, 0, 0.2)";

    closeButton.onclick = () => {
        iframes_count--;
        iframeContainer.remove();
    };

    // Append the iframe and close button to the container
    iframeContainer.appendChild(iframe);
    iframeContainer.appendChild(closeButton);

    // Append the container to the document body
    document.body.appendChild(iframeContainer);
}

function is_connected(type){
    switch(type){
        case 'main':
            return !!window.lobby_ip;
            break
        case 'iframe':
            return !!window[1].lobby_ip;
            break
    }
}

function connection_failed(type){
    switch(type){
        case 'main':
            return document.querySelector("#loading-subtitle").classList.contains('active');
            break
        case 'iframe':
            return window[1].document.querySelector("#loading-subtitle").classList.contains('active');
            break
    }
}

//basic function to construct links
function link(baseUrl, lobby, gamemode, team) {
    let str = "";
    str += baseUrl + "?s=" + lobby + "&g=" + gamemode + "&l=" + team;
    return str;
}

function get_baseUrl() {
    return location.origin + location.pathname;
}

function get_your_lobby() {
    return window.lobby_ip.split(".")[0];
}

function get_gamemode() {
    //return window.__common__.active_gamemode;
    return window.lobby_gamemode;
}

function get_team(type) {
    switch(type){
        case 'main':
            return window.__common__.party_link;
            break
        case 'iframe':{
            let str = window[1].__common__.party_link;
            if(!str){
                current_num--;
                return (current_num + 'x0');
            }
            let old_num = Number(str.split('x')[0]);
            let new_num = old_num-1;
            current_num = new_num;
            return (new_num + 'x0');
        }
            break
    }
}

//start
function setup_iframe(){
    let l;
    switch(iframes_count){
        case 0:
            //no iframes are active, so create one with the current link
            l = link(get_baseUrl(), get_your_lobby(), get_gamemode(), get_team('main'));
            new_iframe(l);
            break
        case 1:
            //close previous one to open a new one
            if(is_connected('iframe')){
                l = link(get_baseUrl(), get_your_lobby(), get_gamemode(), get_team('iframe'));
                document.getElementById(`close-${iframes_count}`).click();
                setTimeout(() => {
                    new_iframe(l);
                    watch_iframe();
                }, 250);
            }else{
                setTimeout(setup_iframe, 250);
            }
            break
    }
}

//watch the iframe
function watch_iframe(){
    if(is_connected('iframe')){
        if(connection_failed('iframe')){
            setup_iframe();
        }else{
            add_link();
            setTimeout(setup_iframe, 250);
        }
    }else{
        setTimeout(watch_iframe, 100);
    }
}

//store the links here
let links = new Map();
function add_link() {
    const linkId = links.size + 1;
    const savedLink = link(
        get_baseUrl(),
        get_your_lobby(),
        get_gamemode(),
        current_num + 'x0'
    );

    links.set(linkId, savedLink);
    window.sandbox_links = links;

    // Create a button for the new link
    const button = document.createElement("button");
    button.innerText = `Link ${linkId}`;
    button.style.margin = "5px";
    button.style.padding = "10px";
    button.style.backgroundColor = "#007BFF";
    button.style.color = "#FFF";
    button.style.border = "none";
    button.style.borderRadius = "5px";
    button.style.cursor = "pointer";
    button.style.display = "block";
    button.style.width = "90%"; // To fit nicely in the container

    // Add click event to open the link in a new window
    button.onclick = () => {
        window.open(savedLink, "_blank");
    };

    // Add the button to the container
    const container = document.getElementById("link-container");
    if (container) {
        container.appendChild(button);
    } else {
        console.error("Container for buttons not found.");
    }
}

//initialise
function init(){
    if(is_connected('main') && !connection_failed('main')){
        createButtonContainer();
        setTimeout(() => {
            setup_iframe();
            watch_iframe();
        }, 500);
    }else{
        setTimeout(init, 100);
    }
}
init();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址