Skip to main content

A blazing fast, async-first, undetectable webscraping/web automation framework

Project description

Chuscraper 🚀

The Undetectable Web Scraping Framework

chuscraper is a powerful, async-first web automation library designed to bypass the toughest anti-bot protections (Akamai, Cloudflare, Datadome, etc.). It is built on top of the Chrome DevTools Protocol (CDP) and includes advanced stealth techniques out-of-the-box.


🔥 Key Features

  • 🛡️ Undetectable Stealth Mode:

    • Automatically hides navigator.webdriver.
    • Mocks navigator.permissions, navigator.plugins, and navigator.mimeTypes.
    • Pro Features:
      • Canvas & WebGL Noise: Randomizes fingerprinting to avoid tracking.
      • Hardware Spoofing: Simulates high-end PC specs (8 Cores, 8GB RAM).
      • Smart UA Rotation: Rotates modern Desktop User-Agents per session.
  • 🔒 Built-in Proxy Auth:

    • Direct CDP-based proxy authentication (no extensions required).
    • Supports http://user:pass@host:port format seamlessly.
    • Bypasses proxy authentication popups automatically.
  • 🌍 Timezone & Geolocation:

    • Automatically overrides system timezone to match your proxy (e.g., Asia/Kolkata).
  • ⚡ Blazing Fast:

    • Uses specific CDP commands to avoid bloat.
    • Lightweight and optimized for high-concurrency scraping.

📦 Installation

# Clone the repo
git clone https://github.com/ToufiqQureshi/chuscraper.git
cd chuscraper

# Install dependencies (if any specific ones, otherwise uses standard libs)
pip install -e .

🚀 Quick Start

1. Basic Usage (Stealth + Proxy)

import asyncio
import chuscraper

async def main():
    # Start browser with Stealth Mode and Proxy
    browser = await chuscraper.start(
        stealth=True,
        proxy="http://user:pass@proxy.example.com:8080",
        timezone="Asia/Kolkata"  # Match your proxy location
    )

    page = await browser.get("https://whoer.net")
    
    # Verify IP and camouflage
    print(f"Title: {await page.title}")
    
    await asyncio.sleep(10)
    await browser.stop()

if __name__ == "__main__":
    asyncio.run(main())

🛠️ Configuration

Argument Type Description
stealth bool Enable advanced anti-detection (Canvas noise, Hardware mocks, UA rotation).
proxy str Proxy URL in scheme://user:pass@host:port format.
timezone str Override browser timezone (e.g., "Asia/Kolkata").
headless bool Run in headless mode (default: False).

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chuscraper-0.16.1.tar.gz (372.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chuscraper-0.16.1-py3-none-any.whl (359.3 kB view details)

Uploaded Python 3

File details

Details for the file chuscraper-0.16.1.tar.gz.

File metadata

  • Download URL: chuscraper-0.16.1.tar.gz
  • Upload date:
  • Size: 372.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for chuscraper-0.16.1.tar.gz
Algorithm Hash digest
SHA256 d32f6f64a7d18169d41b081fdfe0c51464311e7d81ba570e1e0bb96a105475d2
MD5 ca5778b8499355f461166f58531f989e
BLAKE2b-256 798a02f1252a7e1c4ebb40bb49fece4caeebc0a9c67003540f3e9790beee62d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for chuscraper-0.16.1.tar.gz:

Publisher: publish.yml on ToufiqQureshi/chuscraper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chuscraper-0.16.1-py3-none-any.whl.

File metadata

  • Download URL: chuscraper-0.16.1-py3-none-any.whl
  • Upload date:
  • Size: 359.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for chuscraper-0.16.1-py3-none-any.whl
Algorithm Hash digest
SHA256 417ff2267ddc7fd6cbeb633d882ed8fad2438c276d84b8c3ed8b21c93b99f9f8
MD5 9dd34accb9774d7a672364525dbf7d77
BLAKE2b-256 9b7809346cbf8f7f589e08c63ad49078c74bd03161cc65e63788111fe33b38b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for chuscraper-0.16.1-py3-none-any.whl:

Publisher: publish.yml on ToufiqQureshi/chuscraper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page