Skip to content

Instantly share code, notes, and snippets.

@katagaki
Last active August 30, 2025 13:26
Show Gist options
  • Select an option

  • Save katagaki/03e57796fac615b1a154fc8c5072f3c9 to your computer and use it in GitHub Desktop.

Select an option

Save katagaki/03e57796fac615b1a154fc8c5072f3c9 to your computer and use it in GitHub Desktop.
Create a not so suspicious looking browser context using Playwright on Python
async def create_browser_context(p: Playwright) -> BrowserContext:
browser_context: BrowserContext = await p.chromium.launch_persistent_context(
user_data_dir=f"./browser_profiles/{str(uuid4())}",
args=[
"--password-store=basic",
"--disable-features=site-per-process",
"--disable-blink-features=AutomationControlled",
"--disable-web-security",
"--disable-audio-output",
"--disable-gpu",
"--disable-dev-shm-usage",
"--disable-infobars",
"--ignore-certificate-errors",
"--window-position=0,0",
"--disable-popup-blocking",
"--no-first-run",
"--no-default-browser-check",
"--no-sandbox",
"--single-process",
],
headless=True,
viewport={"width": 1069, "height": 573},
screen={"width": 1920, "height": 1080},
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
device_scale_factor=2,
color_scheme="light",
locale="en-US",
timezone_id="Asia/Tokyo",
permissions=[],
bypass_csp=True
)
await browser_context.add_init_script("""
Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
Object.defineProperty(navigator, 'plugins', {get: () => [1, 2, 3, 4, 5]});
Object.defineProperty(navigator, 'languages', {get: () => ['en-US', 'en']});
window.chrome = { runtime: {} };
""")
return browser_context
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment