Build a CloakBrowser Automation Workflow with Stealth Chromium, Persistent Profiles, and Browser Signal Inspection


def cloakbrowser_tutorial_job():
   results = {
       "basic_launch": None,
       "advanced_context": None,
       "storage_restore": None,
       "persistent_profile": None,
       "rendered_extraction": None,
       "static_parsing": None,
       "errors": [],
   }


   print_section("1. Basic CloakBrowser launch")


   browser = None


   try:
       browser = launch(
           headless=True,
           humanize=True,
           args=[
               "--no-sandbox",
               "--disable-dev-shm-usage",
           ],
       )


       page = browser.new_page()
       page.goto("https://example.com", wait_until="domcontentloaded", timeout=60000)


       results["basic_launch"] = {
           "title": page.title(),
           "body_preview": page.locator("body").inner_text(timeout=15000)[:300],
           "url": page.url,
       }


       print(json.dumps(results["basic_launch"], indent=2))


   except Exception as e:
       error = {
           "section": "basic_launch",
           "error": repr(e),
       }
       results["errors"].append(error)
       print(error)


   finally:
       safe_close(browser, "basic browser")


   print_section("2. Advanced context launch with custom browser context")


   context = None


   try:
       context = launch_context(
           headless=True,
           humanize=True,
           viewport={"width": 1365, "height": 768},
           locale="en-US",
           timezone_id="America/New_York",
           color_scheme="light",
           extra_http_headers={
               "Accept-Language": "en-US,en;q=0.9",
               "X-Tutorial-Run": "cloakbrowser-colab",
           },
           args=[
               "--no-sandbox",
               "--disable-dev-shm-usage",
           ],
       )


       page = context.new_page()
       page.goto(TEST_PAGE_URL, wait_until="domcontentloaded", timeout=60000)


       page.locator("#name").fill("CloakBrowser Colab User")
       page.locator("#message").fill(
           "We are testing safe local browser automation in Google Colab."
       )
       page.locator("#submit").click()


       page.wait_for_timeout(1000)


       signals = page.evaluate("() => collectSignals()")
       status_text = page.locator("#status").inner_text()


       page.screenshot(path=str(SCREENSHOT_PATH), full_page=True)
       context.storage_state(path=str(STORAGE_STATE_PATH))


       results["advanced_context"] = {
           "status_text": status_text,
           "signals": signals,
           "screenshot_path": str(SCREENSHOT_PATH),
           "storage_state_path": str(STORAGE_STATE_PATH),
       }


       print(json.dumps(results["advanced_context"], indent=2, default=str))


   except Exception as e:
       error = {
           "section": "advanced_context",
           "error": repr(e),
       }
       results["errors"].append(error)
       print(error)


   finally:
       safe_close(context, "advanced context")


   print_section("3. Restore localStorage using storage_state")


   restored_context = None


   try:
       restored_context = launch_context(
           headless=True,
           humanize=True,
           storage_state=str(STORAGE_STATE_PATH),
           viewport={"width": 1365, "height": 768},
           locale="en-US",
           timezone_id="America/New_York",
           args=[
               "--no-sandbox",
               "--disable-dev-shm-usage",
           ],
       )


       restored_page = restored_context.new_page()
       restored_page.goto(TEST_PAGE_URL, wait_until="domcontentloaded", timeout=60000)


       restored_values = restored_page.evaluate("""
       () => ({
         tutorial_name: localStorage.getItem("tutorial_name"),
         tutorial_message: localStorage.getItem("tutorial_message"),
         cloakbrowser_test: localStorage.getItem("cloakbrowser_test")
       })
       """)


       results["storage_restore"] = restored_values


       print(json.dumps(restored_values, indent=2))


   except Exception as e:
       error = {
           "section": "storage_restore",
           "error": repr(e),
       }
       results["errors"].append(error)
       print(error)


   finally:
       safe_close(restored_context, "restored context")



Source link

  • Related Posts

    LightSeek Foundation Releases TokenSpeed, an Open-Source LLM Inference Engine Targeting TensorRT-LLM-Level Performance for Agentic Workloads

    Inference efficiency has quietly become one of the most consequential bottlenecks in AI deployment. As agentic coding systems such as Claude Code, Codex, and Cursor scale from developer tools to…

    Meta AI Releases NeuralBench: A Unified Open-Source Framework to Benchmark NeuroAI Models Across 36 EEG Tasks and 94 Datasets

    Evaluating AI models trained on brain signals has long been a messy, inconsistent topic. Different research groups use different preprocessing pipelines, train models on different datasets, and report results on…

    Leave a Reply

    Your email address will not be published. Required fields are marked *