This package is abandoned and no longer maintained. No replacement package was suggested.

A library for helping bypass the cloudflare UAM page.

3.4.0 2020-03-24 20:16 UTC

This package is auto-updated.

Last update: 2020-09-07 15:41:43 UTC


Unfortunately these new changes which Cloudflare are implementing will not be feasible to implement nor maintain in PHP. So it saddens me to say this project is going to be archived. Well played Cloudflare.

Cloudflare Bypass


A new and improved PHP library which bypasses the Cloudflare IUAM page using cURL.


With composer:

composer require kyranrana/cloudflare-bypass

Usage with cURL

Use cURL how you normally would but instead of using curl_exec to execute the request we provide a class called CFCurlImpl. CFCurlImpl provides an exec method which takes your cURL handle and executes it - handling the IUAM page if it appears.

Method definition:

CFCurlImpl->exec(resource $curlHandle, UAMOptions $uamOptions)


use CloudflareBypass\CFCurlImpl;
use CloudflareBypass\Model\UAMOptions;

 * Prerequisites
 * Set the following request headers:
 * - Upgrade-Insecure-Requests
 * - User-Agent
 * - Accept
 * - Accept-Language
 * Set the following options:
 * - CURLOPT_VERBOSE        false
$url = "";
$ch = curl_init($url);

// Want to cache clearance cookies ?
//curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
//curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
        "Upgrade-Insecure-Requests: 1",
        "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
        "Accept-Language: en-US,en;q=0.9"

$cfCurl = new CFCurlImpl();

$cfOptions = new UAMOptions();
// $cfOptions->setDelay(5);

try {
    $page = $cfCurl->exec($ch, $cfOptions);

    // Want to get clearance cookies ?
    //$cookies = curl_getinfo($ch, CURLINFO_COOKIELIST);

} catch (ErrorException $ex) {
    echo "Unknown error -> " . $ex->getMessage();