A blazing fast, async-first, undetectable webscraping/web automation framework
Project description
🕷️ Chuscraper
Stealth-focused web scraping & automation framework powered by CDP
You Only Scrape Once — data extraction made smarter, faster, and more resilient.
🚀 What is Chuscraper?
Chuscraper is a Python web scraping & automation library that uses CDP (Chrome DevTools Protocol) to extract structured data, interact with pages, and automate workflows — with a heavy focus on Anti-Detection and Stealth.
It converts standard Chromium instances into undetectable agents that can bypass bot verification systems.
🌟 Features
🕵️♂️ Stealth & Anti-Detection
- Hides
navigator.webdriver, user agent rotation - Canvas/WebGL noise + hardware spoofing
- Timezone & geolocation spoofing
⚡ Async + Fast
Built on async CDP, low overhead, no heavy browser bundles.
🔄 Flexible Outputs
Supports JSON, CSV, Markdown, Excel, Pydantic, and more.
📦 Installation
pip install chuscraper
[!TIP] Use within a virtual environment to avoid conflicts.
💻 Quick Start (The "Easy" Way)
Chuscraper is designed for Zero Boilerplate. You don't need complex configuration objects just to start a stealthy session.
import asyncio
import chuscraper as zd
async def main():
# DIRECT START: Specify stealth, proxy, or headless directly in start()
async with await zd.start(headless=False, stealth=True) as browser:
# 🟢 BROWSER-LEVEL SHORTCUT
await browser.goto("https://www.makemytrip.com/")
# 🟢 INTUITIVE ALIASES (goto, title, select_text)
page = browser.main_tab
await page.goto("https://example.com")
title = await page.title()
header = await page.select_text("h1")
print(f"Bhai, Title hai: {title}")
print(f"Header: {header}")
if __name__ == "__main__":
asyncio.run(main())
[!NOTE]
chuscraperautomatically handles Chrome process cleanup and Local Proxy lifecycle.
⚙️ Configuration Switches (Parameters)
Chuscraper gives you full control via zd.start(). Here are the powerful switches you can use:
🛠️ Core Switches
| Switch | Description | Default |
|---|---|---|
headless |
Run without a visible window (True/False) |
False |
stealth |
Master Switch for Anti-Detection features | False |
user_data_dir |
Path to save/load browser profile (keep logins/cookies) | Temp |
proxy |
Proxy URL (e.g. http://user:pass@host:port) |
None |
🚀 Advanced Switches
| Switch | Description |
|---|---|
browser_executable_path |
Custom path to Chrome/Brave binary |
user_agent |
Spoof specific User-Agent string |
sandbox |
Set False for Linux/Docker environments |
disable_webgl |
Disable graphics for performance (True) |
disable_webrtc |
Prevent IP leaks via WebRTC (True recommended for proxies) |
lang |
Browser language (e.g., en-US, hi-IN) |
🕵️♂️ Granular Stealth Options
When stealth=True, you can fine-tune specific patches by passing a stealth_options dict:
await zd.start(stealth=True, stealth_options={
"patch_webdriver": True, # Hide WebDriver
"patch_webgl": True, # Spoof Graphics Card
"patch_canvas": True, # Add Canvas Noise
"patch_audio": False # Disable Audio Fingerprinting noise
})
🛡️ Stealth & Anti-Detection Proof
We don't just claim to be stealthy; we prove it. Below are the results from top anti-bot detection suites, all passed with 100% "Human" status.
👉 View Full Visual Proofs & Screenshots Here
| Detection Suite | Result | Status |
|---|---|---|
| SannySoft | No WebDriver detected | ✅ Pass |
| BrowserScan | 100% Trust Score | ✅ Pass |
| PixelScan | Consistent Fingerprint | ✅ Pass |
| IPHey | Software Clean (Green) | ✅ Pass |
| CreepJS | 0% Stealth / 0% Headless | ✅ Pass |
| Fingerprint.com | No Bot Detected | ✅ Pass |
🌍 Real-World Protection Bypass
We tested chuscraper against live websites protected by major security providers:
| Provider | Target | Result |
|---|---|---|
| Cloudflare | Turnstile Demo | ✅ Solved Automatically |
| DataDome | Antoine Vastel Research | ✅ Accessed |
| Akamai | Nike Product Page | ✅ Bypassed |
📖 Documentation
Full technical guides are available in the docs/ folder:
Translations (Chinese, Japanese, etc.) coming soon.
💖 Support & Sponsorship
chuscraper is an open-source project maintained by [Toufiq Qureshi]. If the library has helped you or your business, please consider supporting its development:
- GitHub Sponsors: Sponsor me on GitHub
- Corporate Sponsorship: If you are a Proxy Provider or Data Company, we offer featured placement in our documentation. Contact us for partnership opportunities.
- Custom Scraping Solutions: Need a private, high-performance scraper? We offer professional consulting.
🛠️ Contributing
Want to contribute? Open an issue or send a pull request — all levels welcome! Please follow the CONTRIBUTING.md guidelines.
📜 License
Chuscraper is licensed under the AGPL-3.0 License. This ensures that any software using Chuscraper must also be open-source, protecting the community and your freedom.
Made with ❤️ by [Toufiq Qureshi]
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chuscraper-0.9.3.tar.gz.
File metadata
- Download URL: chuscraper-0.9.3.tar.gz
- Upload date:
- Size: 486.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a5ff8552c9c5c0dc5655cd2bd8f23c511ee5627503bec5118ae0db7e6e1b577
|
|
| MD5 |
a7b6cdfec0366e66f4f363c5a455b3b1
|
|
| BLAKE2b-256 |
1f0655d78984d2e3f4d4a1c6f0aed3d9fa9c0a952d5f6704a8a58da9ed3eac8b
|
File details
Details for the file chuscraper-0.9.3-py3-none-any.whl.
File metadata
- Download URL: chuscraper-0.9.3-py3-none-any.whl
- Upload date:
- Size: 260.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3e62a6775671485ac68e3f3d0d0b6a3362743003da5c540755b381e5816fed3
|
|
| MD5 |
2f7e51173ff33ec076b36d0d989cb5d2
|
|
| BLAKE2b-256 |
75a1f37654c8989154fb9af2414e19ebfaf9e3c397826d99d16018c69983643b
|