ImportError: cannot import name 'stealth_async' from 'playwright_stealth'
Fixes the stealth_async import failing on playwright-stealth 2.x, which removed the helper. Use when `from playwright_stealth import stealth_async` raises ImportError naming stealth_async. The async twin of the stealth_sync removal.
playwright-stealth 2.0.0 removed stealth_async (and stealth_sync). Pin back with python -m pip install 'playwright-stealth<2.0.0', or migrate to the 2.x API. If you use crawl4ai, check its pinned stealth version first, since the crawler manages this dependency for you.
The error
ImportError: cannot import name 'stealth_async' from 'playwright_stealth'Fix it
- Check the installed version
python -m pip show playwright-stealth | head -2Expected: 2.x.
- Quick fix: pin below 2.0
python -m pip install 'playwright-stealth<2.0.0'Expected: the 1.x line restores stealth_async.
- Confirm
python -c "from playwright_stealth import stealth_async; print('ok')"Expected: prints ok.
When this applies
- the ImportError names
stealth_asyncfromplaywright_stealth - async scraping code from the 1.x era, including crawl4ai setups
When it does NOT apply
No module named 'playwright_stealth'is the missing installstealth_syncis the sync twin, same release removed both
Compatibility
playwright-stealth 1.x has it, 2.0.0 removed it.
Why it happens
Same 2.0.0 breaking rewrite as the sync helper: both convenience functions were dropped without a shim, and unpinned upgrades break existing imports.
Edge cases
- crawl4ai users: the crawler pins its own stealth dependency range. If you pin manually, keep it consistent with crawl4ai's requirements or you get a resolver fight.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.