Greasy Fork is available in English.
Bypassing gplinks.co
- // ==UserScript==
- // @name Gplinks Bypass
- // @namespace http://tampermonkey.net/
- // @version 0.3
- // @description Bypassing gplinks.co
- // @match *://*/*
- // @author Jayasurya Mailsamy
- // @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 remove <script> tags from <head>
- function removeScriptTagsFromHead() {
- // Select all <script> tags within <head>
- const scriptTags = document.querySelectorAll('head script');
- // Remove each script tag
- scriptTags.forEach(script => {
- script.remove();
- console.log('Removed script tag:', script.src || 'inline 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
- })();