/** * Bypasses CloudFlare and returns cf clearance cookie * * @param string $siteLink Site Host Link * @param string $response CloudFlare DDoS page * * @return string - Clearance Cookie */ public function bypass($siteLink, $response) { // get website host $siteHost = $this->getSiteHost($siteLink); // get cf answer if ($cfAnswer = $this->getAnswer($siteHost, $response)) { // attempt to solve cf equation $cfVerify = $siteHost . '/cdn-cgi/l/chk_jschl?jschl_vc=' . $cfAnswer['jschl_vc'] . '&pass='******'+', '%2', $cfAnswer['pass']) . '&jschl_answer=' . $cfAnswer['answer']; $cfVerify = Fetch::getPage($cfVerify); // if refresh cookie exists if (!($cfClearance = Fetch::getPageCookie($cfVerify, 'cf_clearance'))) { // if maximum amount of attempts has not exceeded if ($this->cfLevel < 5) { $cfClearance = bypass($siteLink, $response); } else { return false; } } if (!$cfClearance) { return false; } // store cf user id $cfUserId = Fetch::getPageCookie($cfVerify, '__cfduid'); // return clearance cookie return $cfClearance . $cfUserId; } }