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())
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐