JVC Cloudflare Bypass

Propose d'activer 1.1.1.1 sur jeuxvideo.com pour éviter les captchas

נכון ליום 09-02-2025. ראה הגרסה האחרונה.

// ==UserScript==
// @name         JVC Cloudflare Bypass
// @namespace    https://jeuxvideo.com/
// @version      1.7
// @description  Propose d'activer 1.1.1.1 sur jeuxvideo.com pour éviter les captchas
// @author       HulkDu92
// @match        *://www.jeuxvideo.com/*
// @grant        GM_xmlhttpRequest
// @connect      cloudflare.com
// @run-at       document-end
// @license      MIT
// @icon         https://image.noelshack.com/fichiers/2025/06/5/1738891409-68747470733a2f2f74616d6e762e696d6769782e6e65742f63665f6279706173735f6c6f676f2e706e67.png
// ==/UserScript==

(function() {
    'use strict';

    const WARP_STATUS_KEY = "jvcWarpStatus";
    const CLOUDFLARE_TRACE_URL = "https://cloudflare.com/cdn-cgi/trace";
    const WARP_BUTTON_URL = "https://1.1.1.1/fr-FR/";

    /**
     * Vérifie si Warp est activé et stocke le résultat dans sessionStorage.
     * Affiche le bouton si Warp est désactivé.
     */
    function checkWarpStatus() {
        const storedStatus = sessionStorage.getItem(WARP_STATUS_KEY);
        if (storedStatus !== null) {
            if (storedStatus === "false") showButton();
            return;
        }

        GM_xmlhttpRequest({
            method: "GET",
            url: CLOUDFLARE_TRACE_URL,
            onload: response => {
                const warpActive = response.responseText.includes("warp=on");
                sessionStorage.setItem(WARP_STATUS_KEY, warpActive.toString());
                if (!warpActive) showButton();
            }
        });
    }

    /**
     * Crée et affiche le bouton permettant d’activer Warp.
     */
    function showButton() {
        injectStyles();
        const button = createButton();

        // Tente d'insérer le bouton dans l'en-tête utilisateur
        const targetElement = document.querySelector('.header__globalUser');
        if (targetElement) {
            targetElement.insertBefore(button, targetElement.firstChild);
        } else {
            // Si l'élément cible est introuvable, afficher le bouton en position fixe
            console.warn("Element cible non trouvé, affichage en position fixed.");
            Object.assign(button.style, {
                position: "fixed",
                bottom: "20px",
                right: "20px",
                zIndex: "9999"
            });
            document.body.appendChild(button);
        }
    }

    /**
     * Injecte les styles CSS du bouton dans la page.
     */
    function injectStyles() {
        const style = document.createElement("style");
        style.textContent = `
            .btn-transparent {
                border: none;
                background-color: #FF5722;
                color: white;
                font-weight: normal;
                white-space: nowrap;
            }

            .btn-transparent:hover {
                background-color: #E64A19;
                box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
            }
        `;

        document.head.appendChild(style);
    }

    /**
     * Crée un bouton avec une icône SVG et un lien vers 1.1.1.1.
     * @returns {HTMLElement} Le bouton créé.
     */
    function createButton() {
        const button = document.createElement("button");
        button.type = "button";
        button.className = "header__navLink--lvl1";
        button.title = "Bloquer Captcha 🛇";
        button.textContent = "Bloquer Captcha";
        button.classList.add("btn-transparent");

        button.onclick = openCloudflareApp;
        return button;
    }

    /**
     * Ouvre un lien vers 1.1.1.1 pour son installation
     */
    function openCloudflareApp() {
      window.open(WARP_BUTTON_URL, "_blank");
      sessionStorage.removeItem(WARP_STATUS_KEY);
      alert(
          "Le blocage complet des Captchas est possible grâce à l'application officielle de Cloudflare.\n\n" +
          "Cette application agit comme un pass VIP pour Cloudflare et empêche tous les captchas sur JVC.\n\n" +
          "Il est recommandé de l'activer uniquement pour JVC.\n\n" +
          "C'est une solution radicale (en espérant qu'elle soit temporaire :hap:) pour éviter les captchas abusifs."
      );
    }

    checkWarpStatus();
})();