您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Bypass Cloudflare
// ==UserScript== // @name Cloudflare Bypasser for Nitro Type Race // @match https://www.nitrotype.com/race // @match https://www.nitrotype.com/race/* // @author Sing Developments // @grant none // @description Bypass Cloudflare // @license MIT // @version 2 // @namespace https://singdevelopmentsblog.wordpress.com/?p=4354 // @icon https://singdevelopmentsblog.files.wordpress.com/2022/11/nitrotype-logo.jpg // ==/UserScript== // This code is for educational purposes only and may not work or be safe to use. // It tries to reverse engineer the Cloudflare JavaScript challenge and make a request to the target website. // Define the target website URL const targetURL = 'https://nitrotype.com/race'; // Define a function to extract the challenge parameters from the HTML source function getChallengeParams(html) { // Use regular expressions to match the challenge parameters const challenge = /name="jschl_vc" value="(\w+)"/.exec(html)[1]; const pass = /name="pass" value="(.+?)"/.exec(html)[1]; const s = /s\s*=\s*document\.createElement\('div'\);\s*s\.innerHTML\s*=\s*"(.+?)";/.exec(html)[1]; const k = /k\s*=\s*'(\w+)';/.exec(html)[1]; return {challenge, pass, s, k}; } // Define a function to solve the challenge expression using eval function solveChallengeExpr(expr) { // Replace document.getElementById with a dummy function expr = expr.replace(/document\.getElementById/g, 'function(){}'); // Evaluate the expression and return the result return eval(expr); } // Define a function to make a request using XMLHttpRequest function makeRequest(url, callback) { // Create a new XMLHttpRequest object const xhr = new XMLHttpRequest(); // Open a GET request to the url xhr.open('GET', url); // Set the response type to text xhr.responseType = 'text'; // Set the onload event handler to call the callback function with the response text xhr.onload = function() { callback(xhr.responseText); }; // Send the request xhr.send(); } // Make an initial request to the target website makeRequest(targetURL, function(response) { // Get the challenge parameters from the response const params = getChallengeParams(response); // Solve the challenge expression using eval const answer = solveChallengeExpr(params.s + params.k); // Construct the verification URL with the challenge parameters and answer const verifyURL = targetURL + '/cdn-cgi/l/chk_jschl?jschl_vc=' + params.challenge + '&pass=' + params.pass + '&jschl_answer=' + answer; // Wait for 4 seconds before making the verification request setTimeout(function() { makeRequest(verifyURL, function(response) { // Check if the verification was successful if (response.includes('You are being redirected')) { // Redirect to the target website window.location.href = targetURL; } else { // Display an error message alert('Verification failed'); } }); }, 4000); });