Source: cloudflare2.phps - download
<?php
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* cloudflare.php 0.1
* by daif alotaibi (http://daif.net)
* daif@daif.net
*
* Link:
* http://daif.net/script/cloudflare2.phps
*
*/
$url = 'https://www.spigotmc.org/';
echo BypassCloudFlare($url);
// the main function to bypass the CloudFlare
function BypassCloudFlare($url) {
$data = OpenURLCloudFlare($url);
if($data) {
preg_match('/name="jschl_vc"\s+value="(.+)"/Ui', $data, $jschl_vc);
preg_match('/name="pass"\s+value="(.+)"/Ui', $data, $pass);
preg_match('/var.+:\+(.+)};/Uis', $data, $matches1);
preg_match_all('/(\*|\+|\-)=(.+);/Uis', $data, $matches2);
if(isset($matches1[1]) && isset($jschl_vc[1]) && isset($pass[1])) {
$var = CalJSData($matches1[1]);
foreach ($matches2[0] as $key => $value) {
if($matches2[1][$key] == '*') {
$var *= CalJSData($matches2[2][$key]);
} elseif($matches2[1][$key] == '-') {
$var -= CalJSData($matches2[2][$key]);
} elseif ($matches2[1][$key] == '+') {
$var += CalJSData($matches2[2][$key]);
}
}
$jschl_answer = intval($var) + strlen(parse_url($url, PHP_URL_HOST));
$url2 = parse_url($url, PHP_URL_SCHEME).'://'.parse_url($url, PHP_URL_HOST);
$url2 .= '/cdn-cgi/l/chk_jschl?';
$url2 .= 'jschl_vc='.$jschl_vc[1];
$url2 .= '&pass='.$pass[1];
$url2 .= '&jschl_answer='.$jschl_answer;
sleep(4);
$data = OpenURLCloudFlare($url2, $url);
}
} else {
return 'error';
}
return $data;
}
// fetch the page
function OpenURLCloudFlare($url, $referer='') {
$headers = array();
$headers[] = 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$headers[] = 'Accept-Language: ar,en;q=0.5';
$headers[] = 'Connection: keep-alive';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if($referer)
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/'.parse_url($url, PHP_URL_HOST).'-cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/'.parse_url($url, PHP_URL_HOST).'-cookie.txt');
$data = curl_exec($ch);
return($data);
}
// parse Java script challenge
function CalJSData($data) {
$data = str_replace(array('((', '))'), '', $data);
$data = explode('+[])+(', $data);
$data[0] = str_replace(array('!+[]', '!![]', '![]', '[]'), array('1', '1', '', ''), $data[0]);
if(isset($data[1])) {
$data[1] = str_replace(array('!+[]', '!![]', '![]', '[]'), array('1', '1', '', ''), $data[1]);
return substr_count($data[0], '1') . substr_count($data[1], '1');
}
return substr_count($data[0], '1');
}
?>