Pydoll: Async Web Automation in Python!
Pydoll is revolutionizing browser automation! Unlike other solutions, it eliminates the need for webdrivers, providing a smooth and reliable automation experience with native asynchronous performance.
Documentation • Quick Start • Contributing • Support • License
Big Updates Are in the Works!
I'm working on a major update for pydoll, bringing several improvements and exciting new features. This version introduces some breaking changes, and I'm taking time to make things cleaner, faster, and easier to maintain.
What's changing?
- Refactored module and file structure for better clarity and maintainability
- Improved logging system for easier debugging and issue tracking
- Static typing support using
mypy
- A modern, dynamic way to query elements (moving away from the Selenium-style approach)
New Features Coming
connect_to_remote
to support remote browser connectionsset_browser_prefs
in theOptions
class to more concise and pragmatic Chrome configuration- Shadow DOM interaction support
- HTML extension interface interaction
- Improved click system (hover, drag, move – like
ActionChains
) - Dynamic proxy switching (no need to restart browser)
What to Expect
This is a big shift and may take a bit of time. While v2 is in progress:
- Releases may slow down temporarily
- Focus will shift to bugfixes and issue responses
Thanks for your continued support, and stay tuned!
Key Features
🔹 Zero Webdrivers! Say goodbye to webdriver compatibility nightmares
🔹 Native Captcha Bypass! Smoothly handles Cloudflare Turnstile and reCAPTCHA v3*
🔹 Async Performance for lightning-fast automation
🔹 Human-like Interactions that mimic real user behavior
🔹 Powerful Event System for reactive automations
🔹 Multi-browser Support including Chrome and Edge
Installation
pip install pydoll-python
Quick Start
Get started with just a few lines of code:
import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
async def main():
async with Chrome() as browser:
await browser.start()
page = await browser.get_page()
# Works with captcha-protected sites
await page.go_to('https://example-with-cloudflare.com')
button = await page.find_element(By.CSS_SELECTOR, 'button')
await button.click()
asyncio.run(main())
Need to configure your browser? Easy!
from pydoll.browser.chrome import Chrome
from pydoll.browser.options import Options
options = Options()
# Add a proxy
options.add_argument('--proxy-server=username:password@ip:port')
# Custom browser location
options.binary_location = '/path/to/your/browser'
async with Chrome(options=options) as browser:
await browser.start()
# Your code here
Documentation
For comprehensive documentation, examples, and deep dives into Pydoll's features, visit our official documentation site.
The documentation includes:
- Detailed usage examples
- API reference
- Advanced techniques and patterns
- Troubleshooting guides
Sponsors
CapSolver is an AI-powered tool that easily bypasses Captchas, allowing uninterrupted access to public data with fast, reliable, and cost-effective. And please enjoy the code PYDOLL to get an extra 6% balance! You can register here.
Pydoll is proudly supported by these amazing sponsors who believe in the future of webdriver-free automation. Their contributions make it possible for us to maintain and improve this project. Interested in becoming a sponsor? Check out our GitHub Sponsors page for more information about the perks and benefits of sponsoring this project!
Contributing
We'd love your help making Pydoll even better! Check out our contribution guidelines to get started. Whether it's fixing bugs, adding features, or improving documentation - all contributions are welcome!
Please make sure to:
- Write tests for new features or bug fixes
- Follow coding style and conventions
- Use conventional commits for pull requests
- Run lint and test checks before submitting
Support My Work
If you find my projects helpful, consider sponsoring me on GitHub.
You'll get access to exclusive perks like prioritized support, custom features, and more!
Can't sponsor right now? No problem — you can still help a lot by:
- ⭐ Starring the repo
- 🐦 Sharing it on social media
- 📝 Writing blog posts or tutorials
- 💬 Giving feedback or reporting issues
Every bit of support makes a difference — thank you! 🙌
📄 License
Pydoll is licensed under the MIT License.
Pydoll — Making browser automation magical! ✨