Remove default playwright automation controlled (#47)

This commit is contained in:
Suchintan 2024-03-09 23:44:59 -05:00 committed by GitHub
parent 1144ddd50f
commit a0b3d0dcae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 4 deletions

View file

@ -43,6 +43,10 @@ class Settings(BaseSettings):
SKYVERN_TELEMETRY: bool = True SKYVERN_TELEMETRY: bool = True
ANALYTICS_ID: str = "anonymous" ANALYTICS_ID: str = "anonymous"
# browser settings
BROWSER_LOCALE: str = "en-US"
BROWSER_TIMEZONE: str = "America/New_York"
def is_cloud_environment(self) -> bool: def is_cloud_environment(self) -> bool:
""" """
:return: True if env is not local, else False :return: True if env is not local, else False

View file

@ -1,5 +1,6 @@
from __future__ import annotations from __future__ import annotations
import tempfile
import uuid import uuid
from datetime import datetime from datetime import datetime
from typing import Any, Awaitable, Protocol from typing import Any, Awaitable, Protocol
@ -39,6 +40,16 @@ class BrowserContextFactory:
video_dir = f"{SettingsManager.get_settings().VIDEO_PATH}/{datetime.utcnow().strftime('%Y-%m-%d')}" video_dir = f"{SettingsManager.get_settings().VIDEO_PATH}/{datetime.utcnow().strftime('%Y-%m-%d')}"
har_dir = f"{SettingsManager.get_settings().HAR_PATH}/{datetime.utcnow().strftime('%Y-%m-%d')}/{BrowserContextFactory.get_subdir()}.har" har_dir = f"{SettingsManager.get_settings().HAR_PATH}/{datetime.utcnow().strftime('%Y-%m-%d')}/{BrowserContextFactory.get_subdir()}.har"
return { return {
"user_data_dir": tempfile.mkdtemp(prefix="skyvern_browser_"),
"locale": SettingsManager.get_settings().BROWSER_LOCALE,
"timezone_id": SettingsManager.get_settings().BROWSER_TIMEZONE,
"args": [
"--disable-blink-features=AutomationControlled",
"--disk-cache-size=1",
],
"ignore_default_args": [
"--enable-automation",
],
"record_har_path": har_dir, "record_har_path": har_dir,
"record_video_dir": video_dir, "record_video_dir": video_dir,
"viewport": {"width": 1920, "height": 1080}, "viewport": {"width": 1920, "height": 1080},
@ -77,18 +88,21 @@ class BrowserArtifacts(BaseModel):
async def _create_headless_chromium(playwright: Playwright, **kwargs: dict) -> tuple[BrowserContext, BrowserArtifacts]: async def _create_headless_chromium(playwright: Playwright, **kwargs: dict) -> tuple[BrowserContext, BrowserArtifacts]:
browser = await playwright.chromium.launch(headless=True)
browser_args = BrowserContextFactory.build_browser_args() browser_args = BrowserContextFactory.build_browser_args()
browser_artifacts = BrowserContextFactory.build_browser_artifacts(har_path=browser_args["record_har_path"]) browser_artifacts = BrowserContextFactory.build_browser_artifacts(har_path=browser_args["record_har_path"])
browser_context = await browser.new_context(**browser_args) browser_context = await playwright.chromium.launch_persistent_context(**browser_args)
return browser_context, browser_artifacts return browser_context, browser_artifacts
async def _create_headful_chromium(playwright: Playwright, **kwargs: dict) -> tuple[BrowserContext, BrowserArtifacts]: async def _create_headful_chromium(playwright: Playwright, **kwargs: dict) -> tuple[BrowserContext, BrowserArtifacts]:
browser = await playwright.chromium.launch(headless=False)
browser_args = BrowserContextFactory.build_browser_args() browser_args = BrowserContextFactory.build_browser_args()
browser_args.update(
{
"headless": False,
}
)
browser_artifacts = BrowserContextFactory.build_browser_artifacts(har_path=browser_args["record_har_path"]) browser_artifacts = BrowserContextFactory.build_browser_artifacts(har_path=browser_args["record_har_path"])
browser_context = await browser.new_context(**browser_args) browser_context = await playwright.chromium.launch_persistent_context(**browser_args)
return browser_context, browser_artifacts return browser_context, browser_artifacts