omegafox/pythonlib/camoufox/sync_api.py
daijro f18b9a00be pythonlib: Add block_images, block_webrtc, fixes, etc. 0.1.3
- Adds block_images & block_webrtc parameters to Camoufox and AsyncCamoufox
- Fixes async_api
- Update README
2024-09-19 19:05:53 -05:00

104 lines
3.8 KiB
Python

from typing import Any, Dict, List, Optional, Union
from browserforge.fingerprints import Fingerprint, Screen
from playwright.sync_api import Browser, Playwright, PlaywrightContextManager
from .addons import DefaultAddons
from .utils import ListOrString, get_launch_options
class Camoufox(PlaywrightContextManager):
"""
Wrapper around playwright.sync_api.PlaywrightContextManager that automatically
launches a browser and closes it when the context manager is exited.
"""
def __init__(self, **launch_options):
super().__init__()
self.launch_options = launch_options
self.browser: Optional[Browser] = None
def __enter__(self) -> Browser:
super().__enter__()
self.browser = NewBrowser(self._playwright, **self.launch_options)
return self.browser
def __exit__(self, *args: Any):
if self.browser:
self.browser.close()
super().__exit__(*args)
def NewBrowser(
playwright: Playwright,
*,
config: Optional[Dict[str, Any]] = None,
addons: Optional[List[str]] = None,
fingerprint: Optional[Fingerprint] = None,
exclude_addons: Optional[List[DefaultAddons]] = None,
screen: Optional[Screen] = None,
os: Optional[ListOrString] = None,
user_agent: Optional[ListOrString] = None,
fonts: Optional[List[str]] = None,
args: Optional[List[str]] = None,
executable_path: Optional[str] = None,
block_images: Optional[bool] = None,
block_webrtc: Optional[bool] = None,
firefox_user_prefs: Optional[Dict[str, Any]] = None,
env: Optional[Dict[str, Union[str, float, bool]]] = None,
**launch_options: Dict[str, Any]
) -> Browser:
"""
Launches a new browser instance for Camoufox.
Parameters:
playwright (Playwright):
Playwright instance to use.
config (Optional[Dict[str, Any]]):
Configuration to use.
addons (Optional[List[str]]):
Addons to use.
fingerprint (Optional[Fingerprint]):
BrowserForge fingerprint to use.
exclude_addons (Optional[List[DefaultAddons]]):
Default addons to exclude. Passed as a list of camoufox.DefaultAddons enums.
screen (Optional[browserforge.fingerprints.Screen]):
BrowserForge screen constraints to use.
os (Optional[ListOrString]):
Operating system to use for the fingerprint. Either a string or a list of strings.
user_agent (Optional[ListOrString]):
User agent to use for the fingerprint. Either a string or a list of strings.
fonts (Optional[List[str]]):
Fonts to load into Camoufox, in addition to the default fonts.
args (Optional[List[str]]):
Arguments to pass to the browser.
block_images (Optional[bool]):
Whether to block all images.
block_webrtc (Optional[bool]):
Whether to block WebRTC entirely.
firefox_user_prefs (Optional[Dict[str, Any]]):
Firefox user preferences to set.
env (Optional[Dict[str, Union[str, float, bool]]]):
Environment variables to set.
executable_path (Optional[str]):
Custom Camoufox browser executable path.
**launch_options (Dict[str, Any]):
Additional Firefox launch options.
"""
opt = get_launch_options(
config=config,
addons=addons,
fingerprint=fingerprint,
exclude_addons=exclude_addons,
screen=screen,
os=os,
user_agent=user_agent,
fonts=fonts,
args=args,
executable_path=executable_path,
env=env,
block_images=block_images,
block_webrtc=block_webrtc,
firefox_user_prefs=firefox_user_prefs,
)
return playwright.firefox.launch(**opt, **launch_options)