Metadata-Version: 2.4
Name: raptorwayz
Version: 1.0.0
Summary: Solve Cloudflare challenges: get a cf_clearance cookie, matching User-Agent, and proxy for your own client. Official Python client for the RaptorWayz API.
Project-URL: Homepage, https://raptorwayz.com
Project-URL: Documentation, https://raptorwayz.com/docs
Project-URL: Source, https://github.com/raptorofficer/raptorwayz
Author-email: RaptorWayz <support@raptorwayz.com>
License: MIT
Keywords: bypass-403,cf_clearance,cloudflare,cloudflare-bypass,cloudflare-challenge,cloudflare-solver,scraping,web-scraping
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# raptorwayz (Python)

Solve Cloudflare challenges from Python. Get a valid `cf_clearance` cookie, the matching User-Agent,
and a proxy on the same exit IP, then make your own request with `requests`, `httpx`, or anything else.

Official Python client for [RaptorWayz](https://raptorwayz.com). Get an API key (5 free solves) there.

```bash
pip install raptorwayz
```

## Usage

```python
import requests
from raptorwayz import RaptorWayz

rw = RaptorWayz("bk_your_api_key")
c = rw.solve("example.com")

resp = requests.get(
    "https://example.com/",
    headers=c.headers,     # {"User-Agent": "..."}
    cookies=c.cookies,     # {"cf_clearance": "..."}
    proxies=c.proxies,     # {"http": "...", "https": "..."}
)
print(resp.status_code)    # 200
```

All three (cookie, User-Agent, and proxy) must be used **together**, or Cloudflare re-challenges.

### With httpx

```python
import httpx
from raptorwayz import RaptorWayz

c = RaptorWayz("bk_your_api_key").solve("example.com")
with httpx.Client(proxy=c.proxy, headers=c.headers, cookies=c.cookies) as client:
    print(client.get("https://example.com/").status_code)
```

### Errors

```python
from raptorwayz import RaptorWayz, RaptorWayzError, NoChallenge

try:
    c = RaptorWayz("bk_...").solve("example.com")
except NoChallenge as nc:
    ...  # domain has no challenge, just use nc.proxy with a normal UA
except RaptorWayzError as e:
    print(e.code, e.status, e.seconds_until_next)  # e.g. "window_active", 429, 900
```

- Zero dependencies (stdlib only).
- Docs: <https://raptorwayz.com/docs> · OpenAPI: <https://raptorwayz.com/openapi.json>

MIT licensed. The client is open source; the hosted solving service is proprietary.
