这里写自定义目录标题
- 核心方法
- apply_stealth_sync
- use_sync和use_async
- 一. playwright_stealth 2.0以上版本
- 1.同步方法
- 2.异步方法
- 3.实例
- 二.playwright_stealth 2.0以下版本
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 Stealthasync 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_stealthasync 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())