Exemplo n.º 1
0
 /**
  * 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;
     }
 }