JVC Cloudflare Bypass

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

目前为 2025-02-10 提交的版本。查看 最新版本

// ==UserScript==
// @name         JVC Cloudflare Bypass
// @namespace    https://jeuxvideo.com/
// @version      1.9
// @description  Propose d'activer 1.1.1.1 sur jeuxvideo.com pour éviter les captchas
// @author       HulkDu92
// @match        *://*.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-warp {
              border: 0.0625rem solid var(--jv-text-secondary);
              background: var(--jv-text-secondary);
              color: #fff;
              font-weight: 500;
              padding: 0;
              font-size: 0.8125rem;
              height: 1.75rem;
              min-width: 6.375rem;
              line-height: 1.6875rem;
              cursor: pointer;
            }
            .btn-warp:hover {
              background: var(--jv-text-secondary-hover, var(--jv-text-secondary));
            }
          `;

        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 = "btn btn-warp";
        button.title = "Bloquer Captcha 🛇";
        button.textContent = "Bloquer Captcha";

        button.onclick = openCloudflareApp;
        return button;
    }

    /**
     * Ouvre un lien vers 1.1.1.1 pour son installation
     */
    function openCloudflareApp() {
      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."
      );
      window.open(WARP_BUTTON_URL, "_blank");
    }

    checkWarpStatus();
})();