playwright-stealth 第一个案例 作者:马育民 • 2026-08-04 16:25 • 阅读:10001 # 介绍 同步版本 sync_api(最常用) 打开浏览器,访问百度,自动输入内容,点击搜索,如果不用 stealth,会弹出人类验证框,使用后直接显示搜索结果 ```python from playwright.sync_api import sync_playwright # ✅ 1. 导入 2.x 版本的 Stealth 类 from playwright_stealth import Stealth with sync_playwright() as p: browser = p.chromium.launch( headless=False, args=[ "--disable-blink-features=AutomationControlled", "--no-sandbox" ] ) context = browser.new_context( viewport={"width": 1280, "height": 720}, locale="zh-CN", timezone_id="Asia/Shanghai" ) page = context.new_page() # ✅ 2. 使用 Stealth 类并调用同步的 apply 方法 # 注意:这里不需要传 page 对象,它会应用到整个 context Stealth().apply_stealth_sync(context) page.wait_for_timeout(1000) # 访问指定网址 page.goto("https://www.baidu.com/") # 设置浏览器窗口大小 # page.set_viewport_size({"width": 1920, "height": 1080}) # 打印网页标题和网址 print(page.title()) print(page.url) page.wait_for_timeout(2000) print("输入搜索关键字") # 使用正确的定位器定位百度搜索框 ele_input = page.locator('//textarea[@id="chat-textarea"]') # 输入框输入文字 ele_input.fill("Python教程") page.wait_for_timeout(1500) print("点击搜索") # css 选择器,给按钮点击 ele_bottom = page.locator('#chat-submit-button') print("ele_bottom:",ele_bottom.count()) if ele_bottom.count() > 1: ele_bottom.first.click() # 等待20秒后退出 page.wait_for_timeout(20000) # ✅ 3. 规范关闭资源 context.close() browser.close() ``` # 重要注意事项(避坑) 1. **调用顺序硬性要求** `Stealth().apply_stealth_sync(context)` **必须在 page.goto() 之前执行** 页面加载完成后再注入,网站检测脚本已经执行,失效! 2. 无头模式新版 Headless=new Playwright 默认新版无头 `headless="new"` 兼容性更好;旧无头 `headless=True` 指纹特征更强,更容易被封。 ```python browser = p.chromium.launch(headless="new") ``` 3. 它不是万能的 ✅ 能绕过:基础JS机器人检测、普通Cloudflare简易验证 ❌ 无法解决: - TLS指纹(可搭配 `curl_cffi`) - 鼠标/点击行为模型检测 - IP封禁、频率限制 - 高级Bot防护(PerimeterX、Datadome) 4. 搭配优化组合(实战推荐) ```python # 启动参数 args=[ "--disable-blink-features=AutomationControlled", "--disable-dev-shm-usage", "--no-sandbox", ] # context 配置 user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0.0.0 Safari/537.36", locale="zh-CN", timezone_id="Asia/Shanghai" ``` 原文出处:http://www.malaoshi.top/show_1GW3njKvOUpB.html