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 description
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.
Project Pass Challenge Status
Warning
Please use interface mode, You must add headless=False. If you use it on linux or docker, use XVFB.
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"})
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")
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.
pip install --upgrade cf-clearance
or
pip install git+https://github.com/vvanglro/cf-clearance.git@main
sync
from playwright.sync_api import sync_playwright
from cf_clearance import sync_cf_retry, sync_stealth
import requests
# not use cf_clearance, cf challenge is fail
proxies = {
"all": "socks5://localhost:7890"
}
res = requests.get('https://nowsecure.nl', proxies=proxies)
if '<title>Just a moment...</title>' in res.text:
print("cf challenge fail")
# get cf_clearance
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy={"server": "socks5://localhost:7890"})
page = browser.new_page()
sync_stealth(page, pure=True)
page.goto('https://nowsecure.nl')
res, cf = sync_cf_retry(page)
if cf:
if res:
cookies = page.context.cookies()
for cookie in cookies:
if cookie.get('name') == 'cf_clearance':
cf_clearance_value = cookie.get('value')
print(cf_clearance_value)
ua = page.evaluate('() => {return navigator.userAgent}')
print(ua)
else:
print("cf challenge fail")
else:
print("No cloudflare challenges encountered")
browser.close()
# 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=proxies, headers=headers, cookies=cookies)
if '<title>Just a moment...</title>' not in res.text:
print("cf challenge success")
async
import asyncio
from playwright.async_api import async_playwright
from cf_clearance import async_cf_retry, async_stealth
import requests
async def main():
# not use cf_clearance, cf challenge is fail
proxies = {
"all": "socks5://localhost:7890"
}
res = requests.get('https://nowsecure.nl', proxies=proxies)
if '<title>Just a moment...</title>' in res.text:
print("cf challenge fail")
# get cf_clearance
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False, proxy={"server": "socks5://localhost:7890"})
page = await browser.new_page()
await async_stealth(page, pure=True)
await page.goto('https://nowsecure.nl')
res, cf = await async_cf_retry(page)
if cf:
if res:
cookies = await page.context.cookies()
for cookie in cookies:
if cookie.get('name') == 'cf_clearance':
cf_clearance_value = cookie.get('value')
print(cf_clearance_value)
ua = await page.evaluate('() => {return navigator.userAgent}')
print(ua)
else:
print("cf challenge fail")
else:
print("No cloudflare challenges encountered")
await browser.close()
# 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=proxies, headers=headers, cookies=cookies)
if '<title>Just a moment...</title>' not in res.text:
print("cf challenge success")
asyncio.get_event_loop().run_until_complete(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cf_clearance-0.30.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3bf8db47ead9de13b0dd94dc5158508c881fdd9f0a3cd25f2017d8f6725d57d |
|
MD5 | 4f98bda80a7da92998213c4a36abf299 |
|
BLAKE2b-256 | 8df9ba1297e5acea78f025df941a9a247f3be2528c3ba6d38d13fd8bf52ded35 |