Metadata-Version: 2.4
Name: flarebreak
Version: 0.2.1
Summary: Python wrapper for cloudflare-solver — bypass Turnstile & IUAM with ease
License: MIT
Project-URL: Homepage, https://github.com/B00H0O/cloudflare-solver
Keywords: cloudflare,turnstile,captcha,iuam,cf-clearance,scraping,bypass
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28
Provides-Extra: async
Requires-Dist: aiohttp>=3.9; extra == "async"
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: keywords
Dynamic: license
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# flarebreak

Python wrapper for [cloudflare-solver](https://github.com/B00H0O/cloudflare-solver) — Cloudflare Turnstile ve IUAM korumalarını otomatik çözer.

Hem **sync** (`requests`) hem **async** (`aiohttp`) destekler.

---

## Kurulum

```bash
# Sadece sync
pip install flarebreak

# Async da istiyorsan
pip install "flarebreak[async]"
```

---

## Gereksinim

Kütüphaneyi kullanmadan önce solver servisinin çalışıyor olması lazım:

```bash
docker build -t turnstile-solver .
docker run -d -p 407:407 turnstile-solver
```

---

## Kullanım

### Otomatik (önerilen)

```python
from flarebreak import CloudflareSolver

with CloudflareSolver() as solver:
    # Sitekey aramana gerek yok — otomatik bulur ve çözer
    result = solver.solve("https://korumalı-site.com")
    print(result.token)        # Turnstile ise
    print(result.cf_clearance) # IUAM ise
```

### Manuel — Turnstile

```python
from flarebreak import CloudflareSolver

with CloudflareSolver() as solver:
    result = solver.turnstile(
        url="https://site.com",
        sitekey="0x4AAAAAAAGzw6rXeQWJ_y2P",
    )
    print(result.token)
    print(result.elapsed)  # "2.94s"
```

### Manuel — IUAM (cf_clearance)

```python
import requests
from flarebreak import CloudflareSolver

with CloudflareSolver() as solver:
    result = solver.iuam(url="https://nowsecure.nl")

print(result.cf_clearance)
print(result.user_agent)  # replay'de zorunlu!

# Aynı oturumu devam ettir
session = requests.Session()
session.headers.update(result.headers)
resp = session.get("https://nowsecure.nl")
```

### Ne tür koruma var? (detect)

```python
with CloudflareSolver() as solver:
    info = solver.detect("https://site.com")
    print(info.has_turnstile)  # True/False
    print(info.has_iuam)       # True/False
    print(info.sitekey)        # 0x4AAA...
```

### Async + paralel

```python
import asyncio
from flarebreak import AsyncCloudflareSolver

async def main():
    async with AsyncCloudflareSolver() as solver:
        results = await asyncio.gather(
            solver.solve("https://site-a.com"),
            solver.solve("https://site-b.com"),
            solver.solve("https://site-c.com"),
        )
    for r in results:
        print(r)

asyncio.run(main())
```

### Proxy desteği

```python
with CloudflareSolver() as solver:
    result = solver.solve(
        "https://site.com",
        proxy="http://user:pass@proxy.example.com:8080",
        # socks5://... ve socks4://... de desteklenir
    )
```

---

## API

### `CloudflareSolver(host, port, timeout)`

| Param | Default | Açıklama |
|-------|---------|----------|
| `host` | `"localhost"` | Solver servis adresi |
| `port` | `407` | Solver servis portu |
| `timeout` | `60` | Saniye cinsinden zaman aşımı |

### Metodlar

| Metod | Açıklama | Döndürür |
|-------|----------|----------|
| `solve(url)` | Otomatik tespit et ve çöz | `TurnstileResult` veya `IUAMResult` |
| `turnstile(url, sitekey)` | Manuel Turnstile çöz | `TurnstileResult` |
| `iuam(url)` | Manuel IUAM çöz | `IUAMResult` |
| `detect(url)` | Sadece tespit et, çözme | `DetectionResult` |
| `health()` | Servis durumu | `HealthResult` |

### Result nesneleri

**TurnstileResult**
```python
result.token        # "1.kMLfH4VM8k..."
result.elapsed      # "2.94s"
result.success      # True/False
```

**IUAMResult**
```python
result.cf_clearance # "155jEz2BCC8o..."
result.user_agent   # "Mozilla/5.0..."
result.headers      # {"Cookie": "...", "User-Agent": "..."}
result.ip           # "45.152.31.27"
result.elapsed      # "2.87s"
result.success      # True/False
```

**DetectionResult**
```python
result.has_turnstile  # True/False
result.has_iuam       # True/False
result.sitekey        # "0x4AAA..." (ilk bulunan)
result.sitekeys       # ["0x4AAA...", ...] (tümü)
result.is_protected   # True/False
```

---

## Hata yönetimi

```python
from flarebreak import SolverError, TimeoutError, SolverUnavailableError

try:
    result = solver.solve("https://site.com")
except TimeoutError:
    print("Solver zaman aşımına uğradı")
except SolverUnavailableError:
    print("Docker container çalışmıyor")
except SolverError as e:
    print(f"Hata: {e}")
```

---

## Lisans

MIT
