Greasy Fork is available in English.

Gplinks Bypass Reborn

Bypass gplinks.co Links

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         Gplinks Bypass Reborn
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Bypass gplinks.co Links
// @match        *://*/*
// @author       Krish
// @grant        none
// ==/UserScript==
 
(function() {
    'use strict';
 
 
    // Function to remove scripts from the head
    function removeHeadScripts() {
        const head = document.head || document.getElementsByTagName('head')[0];
        const scripts = head.querySelectorAll('script');
 
        scripts.forEach(script => {
            script.parentNode.removeChild(script);
        });
    }
 
    // Function to set up a MutationObserver to detect script tags being added to the head
    function observeHeadForScripts() {
        const head = document.head || document.getElementsByTagName('head')[0];
 
        // Create a MutationObserver to watch for changes in the head element
        const observer = new MutationObserver(mutations => {
            mutations.forEach(mutation => {
                mutation.addedNodes.forEach(node => {
                    if (node.tagName === 'SCRIPT') {
                        node.parentNode.removeChild(node);
                    }
                });
            });
        });
 
        // Observe the head element for child list changes
        observer.observe(head, {
            childList: true
        });
 
        // Also remove existing script elements immediately
        removeHeadScripts();
    }
 
    // Function to check for the specific script tag
    function checkForScript() {
        const scriptSrc = 'https://api.gplinks.com/track/js/main.js?2.7';
        const scripts = document.getElementsByTagName('script');
 
        for (let i = 0; i < scripts.length; i++) {
            if (scripts[i].src === scriptSrc) {
 
                // Proceed to make POST requests and redirect
                makePostRequestsAndRedirect();
                break;
            }
        }
    }
 
    // Function to get the value of a specific cookie
    function getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return parts.pop().split(';').shift();
        return null;
    }
 
    // Function to alert selected cookies
    function alertSelectedCookies() {
        const lid = getCookie("lid");
        const pid = getCookie("pid");
        const plid = getCookie("plid");
        const vid = getCookie("vid");
 
        let message = 'Cookies:\n';
        if (lid) message += `lid: ${lid}\n`;
        if (pid) message += `pid: ${pid}\n`;
        if (plid) message += `plid: ${plid}\n`;
        if (vid) message += `vid: ${vid}\n`;
 
        if (message === 'Cookies:\n') {
            message = 'No relevant cookies found.';
        }
 
        alert(message);
    }
 
    // Function to make POST requests
    function setVisitor(status, impressions, visitorId) {
        return $.ajax({
            type: "POST",
            url: "https://gplinks.com/track/data.php",
            data: {
                request: "setVisitor",
                status: status,
                imps: impressions,
                vid: visitorId,
            },
            dataType: "json",
        });
    }
 
    // Function to handle POST requests and redirect
    function makePostRequestsAndRedirect() {
        const vid = getCookie("vid"); // Assuming you want to use the cookie value for visitorId
        const cookie_pub_id = getCookie("pid");
        const cookie_link_id = getCookie("lid");
        if (!vid || !cookie_pub_id || !cookie_link_id) {
            alert('Missing required cookies for POST requests and redirect.');
            return;
        }
 
        // Perform three POST requests with different parameters
        $.when(
            setVisitor(1, 2, vid),
            setVisitor(2, 4, vid),
            setVisitor(3, 6, vid)
        ).done(function() {
            // Construct the target URL after POST requests are done
            const target_final = `https://gplinks.co/${cookie_link_id}/?pid=${cookie_pub_id}&vid=${vid}`;
            // Redirect to the target URL
            window.location.href = target_final;
        }).fail(function() {
            alert('One or more POST requests failed.');
        });
    }
 
    // Load jQuery if not already present
    function loadJQuery(callback) {
        const script = document.createElement('script');
        script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
        script.onload = callback;
        document.head.appendChild(script);
    }
 
    // Function to modify the counter_value in app_vars
    function modifyCounterValue() {
        // Ensure the app_vars object is available
        if (window.app_vars) {
            // Check if counter_value exists in app_vars
            if ('counter_value' in window.app_vars) {
                // Modify counter_value to 0
                window.app_vars.counter_value = null;
 
            } else {
                console.error('counter_value not found in app_vars');
            }
        } else {
            console.error('app_vars not found on the page');
        }
    }
 
    // Function to check if an element exists
    function elementExists(selector) {
        return $(selector).length > 0;
    }
 
    // Redirect function
    function redirect(url) {
        window.location.href = url;
    }
// Function to copy text to clipboard and redirect
function handleRedirect(data) {
    // Copy URL to clipboard
    navigator.clipboard.writeText(data.url).then(() => {
        console.log('URL copied to clipboard');
 
        // Redirect after copying
        window.location.href = data.url;
    }).catch(err => {
        console.error('Failed to copy URL: ', err);
    });
}
 
 $(document).ready(function() {
 
    if (window.jQuery) {
        checkForScript();
    } else {
        loadJQuery(checkForScript);
    }
     observeHeadForScripts();
        removeScriptTagsFromHead();
        modifyCounterValue();
 if (elementExists('form[id=go-link]')) {
            var form = $('form[id=go-link]');
 
            // Unbind any existing submit handlers
            form.unbind().submit(function(e) {
                e.preventDefault(); // Prevent the default form submission
 
                // AJAX request
                $.ajax({
                    type: 'POST',
                    async: true,
                    url: form.attr('action'),
                    data: form.serialize(),
                    dataType: 'json',
                    success: function(data) {
                        if (data.url) {
                            handleRedirect(data);
                            redirect(data.url); // Redirect based on server response
                        } else {
                            console.error('No URL returned in response');
                        }
                    },
                    error: function(xhr, status, error) {
                        console.error('AJAX request failed:', status, error);
                    }
                });
            });
        }
});
 
    // Check if jQuery is already loaded
 
})();

(function() {
    'use strict';

    // Simulate the basic RektCAPTCHA functionality directly in the script
    async function solveCAPTCHA() {
        console.log("Attempting to solve CAPTCHA...");

        // Example solving process (you'll replace this with the actual CAPTCHA solving method)
        return new Promise((resolve, reject) => {
            try {
                // Simulate some CAPTCHA solving logic
                setTimeout(() => {
                    console.log("CAPTCHA solved!");
                    resolve(true); // In reality, you'd get the solved token or result here
                }, 3000); // Simulate a delay of 3 seconds for solving
            } catch (error) {
                reject(error);
            }
        });
    }

    // Wait for the page to fully load
    $(document).ready(function() {
        // Try solving the CAPTCHA
        solveCAPTCHA().then(result => {
            if (result) {
                console.log('CAPTCHA solved successfully.');

                // Now, proceed with the rest of the gplinks bypass logic
                proceedAfterCAPTCHA();
            }
        }).catch(err => {
            console.error('Failed to solve CAPTCHA:', err);
        });
    });

    // Function to proceed with gplinks bypass after CAPTCHA is solved
    function proceedAfterCAPTCHA() {
        console.log('Proceeding with gplinks bypass...');
        // Add your logic for continuing to bypass after CAPTCHA here
    }

})();