/cf-clearance

Purpose To make a cloudflare v2 challenge pass successfully, Can be use cf_clearance bypassed by cloudflare, However, with the cf_clearance, make sure you use the same IP and UA as when you got it.

Primary LanguagePythonApache License 2.0Apache-2.0

cf-clearance

OSCS Status Package version Supported Python versions Docker Image versions

Purpose To make a cloudflare v2 challenge pass successfully, Can be use cf_clearance bypassed by cloudflare, However, with the cf_clearance, make sure you use the same IP and UA as when you got it.

Project Pass Challenge Status

Every day cron challenge

Warning

  • If you use chromium, Please use interface mode, You must add headless=False. If you use it on linux or docker, use XVFB.

  • If you use firefox you don't need interface mode and XVFB, But unstable and not recommended.

  • Challenge are not always successful. Please try more and handle exceptions.

Docker Usage

Recommended to install using Docker container on Ubuntu server.

DockerHub => https://hub.docker.com/r/vvanglro/cf-clearance

docker run -d --restart always --network host --name cf-clearance vvanglro/cf-clearance:latest \
--host 0.0.0.0 --port 8000 --workers 1
curl http://localhost:8000/challenge -H "Content-Type:application/json" -X POST \
-d '{"proxy": {"server": "socks5://localhost:7890"}, "timeout":20, "url": "https://nowsecure.nl"}'
import requests

proxy = "socks5://localhost:7890"
resp = requests.post(
    "http://localhost:8000/challenge",
    json={
        "proxy": {"server": proxy},
        "timeout": 20,
        "url": "https://nowsecure.nl",
        "pure": True,
        "cookies": [
            {
                "url": "https://www.example.com",
                "name": "example-cookie",
                "value": "example-value",
            }
        ],
        "headers": {"example-ua": "example-ua-value"},
        "exec_js": "() => {return navigator.userAgent}",
    },
)
data = resp.json()
# In some cases, the cloudflare challenge will not be triggered,
# so when cf in the return parameter is true, it means that the challenge has been encountered.
if data.get("success") and data.get("cf"):
    ua = data.get("user_agent")
    exec_js_resp = data.get("exec_js_resp")
    cf_clearance_value = data.get("cookies").get("cf_clearance")
    # use cf_clearance, must be same IP and UA
    headers = {"user-agent": ua}
    cookies = {"cf_clearance": cf_clearance_value}
    res = requests.get(
        "https://nowsecure.nl", proxies={"all": proxy}, headers=headers, cookies=cookies
    )
    if "<title>Just a moment...</title>" not in res.text:
        print("cf challenge success")

Install

pip install cf-clearance

Usage

Please make sure it is the latest package. See example.

pip install --upgrade cf-clearance

or

pip install git+https://github.com/vvanglro/cf-clearance.git@main

Install Playwright Depends

playwright install chromium firefox