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');
    }
?>