{"flag":true,"single":true,"pageTitle":"Playwrite un dected code","post":{"id":296,"user_id":"1","slug":"playwrite-un-dected-code-yn26","title":"Playwrite un dected code","body":"<pre class=\"language-markup\"><code>from playwright.sync_api import sync_playwright,expect\r\nimport re\r\n\r\nwith sync_playwright() as p:\r\n    browser = p.chromium.launch(\r\n        headless=False, # Launch browser with additional args to mimic a real Chrome instance\r\n        args=[\r\n            \"--disable-blink-features=AutomationControlled\",  # Hides automation flags\r\n            \"--disable-infobars\",  # Removes \"Chrome is being controlled\" banner\r\n            \"--start-maximized\"  # Makes it look like a user-opened browser\r\n        ]\r\n    )\r\n    context = browser.new_context( # Create a context with realistic settings\r\n        user_agent=\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/122.0.0.0 Safari\/537.36\",\r\n        viewport={\"width\": 1280, \"height\": 720},\r\n        locale=\"en-US\",\r\n    )\r\n\r\n    page = context.new_page() # Spoof webdriver detection\r\n    page.add_init_script(\"\"\"\r\n        Object.defineProperty(navigator, 'webdriver', {get: () =&gt; undefined});\r\n        Object.defineProperty(navigator, 'plugins', {get: () =&gt; [1, 2, 3]});\r\n        Object.defineProperty(navigator, 'languages', {get: () =&gt; ['en-US', 'en']});\r\n    \"\"\")\r\n\r\n\r\n    page.goto(\"https:\/\/accounts.google.com\/ServiceLogin\", wait_until=\"domcontentloaded\") # Navigate to Google login page\r\n    try:\r\n        expect(page).to_have_title(re.compile(\"Google\"), timeout=2000)\r\n    except AssertionError as e:\r\n        print(f\"Title mismatch: {e}\")\r\n        print(\"Proceeding despite title mismatch...\")\r\n        print(page.title()) #print page title -\r\n\r\n    input(\"Press Enter to close the browser...\")\r\n    browser.close()<\/code><\/pre>\r\n<p>&nbsp;<\/p>\r\n<p><strong>OR CLASS BASED:<\/strong><\/p>\r\n<pre class=\"language-markup\"><code>from playwright.sync_api import sync_playwright, expect, TimeoutError\r\nimport time\r\nimport re\r\nimport csv\r\n\r\nclass Init:\r\n    def __init__(self):\r\n        # Initialize Playwright and browser\r\n        self.playwright = sync_playwright().start()\r\n        self.browser = self.playwright.chromium.launch(\r\n            channel=\"chrome\",\r\n            headless=False,\r\n            args=[\r\n                \"--disable-blink-features=AutomationControlled\",\r\n                \"--disable-infobars\",\r\n                \"--start-maximized\"  # Maximizes the browser window\r\n            ]\r\n        )\r\n        \r\n        # Create context with realistic settings\r\n        self.context = self.browser.new_context(\r\n            user_agent=\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/122.0.0.0 Safari\/537.36\",\r\n            locale=\"en-US\",\r\n            viewport=None  # Ensures maximum screen size with --start-maximized\r\n        )\r\n\r\n        # Create page object accessible to all methods\r\n        self.page = self.context.new_page()\r\n        \r\n        # Spoof webdriver detection\r\n        self.page.add_init_script(\"\"\"\r\n            Object.defineProperty(navigator, 'webdriver', {get: () =&gt; undefined});\r\n            Object.defineProperty(navigator, 'plugins', {get: () =&gt; [1, 2, 3]});\r\n            Object.defineProperty(navigator, 'languages', {get: () =&gt; ['en-US', 'en']});\r\n        \"\"\")\r\n\r\n    def google_login(self):\r\n        \"\"\"Perform Google login using the initialized page\"\"\"\r\n        # Navigate to Google login page\r\n        self.page.goto(\"https:\/\/accounts.google.com\/ServiceLogin\", wait_until=\"domcontentloaded\")\r\n        \r\n        # Fill email field\r\n        email_field = self.page.get_by_role(\"textbox\", name=\"Email or phone\")\r\n        email_field.click()\r\n        email_field.fill(\"mail@gmail.com\")\r\n        self.page.get_by_role(\"button\", name=\"Next\").click()\r\n\r\n\r\n    def cleanup(self):\r\n        \"\"\"Clean up resources\"\"\"\r\n        self.context.close()\r\n        self.browser.close()\r\n        self.playwright.stop()\r\n\r\n\r\ninit = Init()\r\ninit.google_login()\r\ninput(\"Press any key to exit\")\r\ninit.cleanup() # Cleanup when done<\/code><\/pre>","category_id":"37","is_private":"0","created_at":"2025-03-06T00:39:25.000000Z","updated_at":"2025-03-06T09:26:19.000000Z","category":{"id":37,"user_id":"1","name":"Playwright","slug":"playwright-c2zf","parent_id":null,"created_at":"2025-03-05T22:35:12.000000Z","updated_at":"2025-03-05T22:35:12.000000Z"},"user":{"id":1,"name":"R GONDAL","email":"rizikmw@gmail.com","email_verified_at":null,"two_factor_confirmed_at":null,"current_team_id":"1","profile_photo_path":null,"created_at":"2023-03-12T10:49:33.000000Z","updated_at":"2025-01-10T12:59:00.000000Z","profile_photo_url":"https:\/\/ui-avatars.com\/api\/?name=R+G&color=7F9CF5&background=EBF4FF"}},"pageDesc":"from playwright.sync_api import sync_playwright,expect import re  with sync_playwright() as p:     browser = p.chromium.launch(         head - Playwrite un dected code (Updated: March 6, 2025) - Read more about Playwrite un dected code at my programming site [SITE]","categories":[]}