【亲测有效】防检测插件playwright_stealth 2.X版本快速使用
摘要: playwright-stealth是一个增强Playwright自动化脚本隐蔽性的库,通过注入JS代码来规避网站检测。核心方法包括同步的apply_stealth_sync和异步的apply_stealth_async,它们会向页面注入反检测脚本。2.0+版本提供Stealth类进行封装,支持上下文管理器和直接调用两种方式,而旧版本则直接调用stealth_async函数。该工具适用于爬
·
这里写自定义目录标题
playwright-stealth 是一个用于 Playwright 的库,旨在帮助自动化脚本避开一些检测机制,使得自动化操作更难被网站识别为非人类行为。Playwright 本身并不提供这些功能,因此借助 playwright-stealth 可以增强你的爬虫或自动化测试脚本的隐蔽性。
核心方法
apply_stealth_sync
从源码中可以清晰看到这些执行了一段js
def apply_stealth_sync(self, page_or_context: Union[sync_api.Page, sync_api.BrowserContext]) -> None:
if len(self.script_payload) > 0:
page_or_context.add_init_script(self.script_payload)
根据不同的内核执行不同的js,从而达到仿造的效果
use_sync和use_async
是一个用于 同步 Playwright 的 上下文管理器包装函数,其目的是 将 Playwright 的上下文(context)进行“增强”或“钩子处理”,以确保在使用该上下文创建的浏览器或页面时,自动应用反检测(stealth)逻辑。
这里会自动调用apply_stealth_sync
with Stealth().use_async(sync_playwright()) as p
# 启动浏览器
browser = await p.chromium.launch(headless=False) # 设置 headless=False 以便于观察
page = await browser.new_page()
# 应用 stealth 模式
stealth = Stealth()
await stealth.apply_stealth_async(self.page)
# 访问目标网页
await page.goto('https://example.com')
# 在这里添加你需要执行的操作
# 关闭浏览器
await browser.close()
一. playwright_stealth 2.0以上版本
1.同步方法
from playwright_stealth.stealth import Stealth
stealth = Stealth()
stealth.apply_stealth_sync(self.page)
2.异步方法
from playwright_stealth.stealth import Stealth
stealth = Stealth()
await stealth.apply_stealth_async(self.page)
3.实例
import asyncio
from playwright.async_api import async_playwright
from playwright_stealth.stealth import Stealth
async def main():
async with async_playwright() as p:
# 启动浏览器
browser = await p.chromium.launch(headless=False) # 设置 headless=False 以便于观察
page = await browser.new_page()
# 应用 stealth 模式
stealth = Stealth()
await stealth.apply_stealth_async(self.page)
# 访问目标网页
await page.goto('https://example.com')
# 在这里添加你需要执行的操作
# 关闭浏览器
await browser.close()
# 运行主函数
asyncio.run(main())
二.playwright_stealth 2.0以下版本
import asyncio
from playwright.async_api import async_playwright
import playwright_stealth
async def main():
async with async_playwright() as p:
# 启动浏览器
browser = await p.chromium.launch(headless=False) # 设置 headless=False 以便于观察
page = await browser.new_page()
# 应用 stealth 模式
await playwright_stealth.stealth_async(page)
# 访问目标网页
await page.goto('https://example.com')
# 在这里添加你需要执行的操作
# 关闭浏览器
await browser.close()
# 运行主函数
asyncio.run(main())
更多推荐



所有评论(0)