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

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

Leave a Reply

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

Pin It on Pinterest