Greasy Fork

Greasy Fork is available in English.

Papergames Ban Bypass

Simple userscript to randomize browser fingerprints and block certain tracking APIs.

目前为 2024-08-23 提交的版本。查看 最新版本

// ==UserScript==
// @name         Papergames Ban Bypass
// @namespace    github.com/longkidkoolstar
// @version      0.1.1
// @description  Simple userscript to randomize browser fingerprints and block certain tracking APIs.
// @author       longkidkoolstar
// @icon         https://i.imgur.com/nxEJksd.png
// @match        https://papergames.io/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Randomize User-Agent
    const userAgentList = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0',
        'Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Mobile/15E148 Safari/604.1'
    ];
    const randomUserAgent = userAgentList[Math.floor(Math.random() * userAgentList.length)];
    Object.defineProperty(navigator, 'userAgent', {
        get: function() { return randomUserAgent; }
    });

    // Spoof Screen Resolution
    const fakeScreenWidth = Math.floor(Math.random() * (1920 - 800 + 1) + 800);
    const fakeScreenHeight = Math.floor(Math.random() * (1080 - 600 + 1) + 600);
    Object.defineProperty(window.screen, 'width', {
        get: function() { return fakeScreenWidth; }
    });
    Object.defineProperty(window.screen, 'height', {
        get: function() { return fakeScreenHeight; }
    });

    // Block Canvas Fingerprinting
    const originalToDataURL = HTMLCanvasElement.prototype.toDataURL;
    HTMLCanvasElement.prototype.toDataURL = function(type) {
        console.log("Canvas toDataURL blocked.");
        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA";
    };

    const originalGetImageData = CanvasRenderingContext2D.prototype.getImageData;
    CanvasRenderingContext2D.prototype.getImageData = function(x, y, width, height) {
        console.log("Canvas getImageData blocked.");
        return originalGetImageData.call(this, x, y, width, height);
    };

    // Block WebGL Fingerprinting
    const getParameter = WebGLRenderingContext.prototype.getParameter;
    WebGLRenderingContext.prototype.getParameter = function(parameter) {
        if (parameter === 37446 || parameter === 37447) {
            console.log("WebGL parameter blocked.");
            return "Blocked";
        }
        return getParameter.call(this, parameter);
    };

    // Clear cookies and local storage on page load
    window.addEventListener('load', function() {
        console.log('Clearing cookies and local storage.');
        document.cookie.split(";").forEach(function(c) {
            document.cookie = c.trim().split("=")[0] + "=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/";
        });
        localStorage.clear();
        sessionStorage.clear();
    });

})();