這里寫自定義目錄標題
- 核心方法
- 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())