Cloudflare Bypasser for Nitro Type Race

Bypass Cloudflare

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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);
});