nightwatchjs / nightwatch

Integrated end-to-end testing framework written in Node.js and using W3C Webdriver API. Developed at @browserstack
https://nightwatchjs.org
MIT License
11.83k stars 1.32k forks source link

setGeolocation not functional in headless mode #3451

Closed chriscuba23 closed 1 year ago

chriscuba23 commented 2 years ago

Description of the bug/issue

When I run the setGeolocation example test in headless Chrome then it seems that the geolocation services are not enabled in the browser whilst when I do the same thing without the headless tag everything works as it should with the command

Steps to reproduce

Run example here https://nightwatchjs.org/api/setGeolocation.html#apimethod-container using headless Chrome

Sample test

describe('mock geolocation', function () {
  it('sets the geolocation to Tokyo, Japan and then resets it', () => {
    browser
      .setGeolocation({
        latitude: 35.689487,
        longitude: 139.691706,
        accuracy: 100
      })  // sets the geolocation to Tokyo, Japan
      .navigateTo('https://www.gps-coordinates.net/my-location')
      .pause(3000)
      .verify.textContains('span#addr', 'Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan')
      .setGeolocation()  // resets the geolocation
      .navigateTo('https://www.gps-coordinates.net/my-location')
      .pause(3000);
  });
});

Command to run

node nightwatch test.js --headless

Verbose Output

[mock geolocation] Test Suite
──────────────────────────────────────────────────────────
⠋ Starting ChromeDriver on auto-generated port...
 Starting ChromeDriver with server_path=C:\Users\*****\e2e_tests_upgrade - new marketplace\node_modules\chromedriver\lib\chromedriver\chromedriver.exe...
   Request POST /session  
   {
     desiredCapabilities: {
       browserName: 'chrome',
       javascriptEnabled: true,
       acceptSslCerts: true,
       browserTag: 'mttestcr',
       loggingPrefs: { browser: 'ALL' },
       'goog:chromeOptions': {
         w3c: false,
         args: [
           '--no-sandbox',
           '--ignore-certificate-errors',
           '--allow-insecure-localhost',
           '--headless',
           '--disable-gpu',
           '--disable-software-rasterizer',
           '--window-size=1920,925',
           '--log-level=3',
           '--disable-logging'
         ],
         prefs: { 'profile.default_content_setting_values.cookies': 1 }
       },
       name: 'mock geolocation'
     },
     capabilities: {
       alwaysMatch: {
         browserName: 'chrome',
         'goog:chromeOptions': {
           w3c: false,
           args: [
             '--no-sandbox',
             '--ignore-certificate-errors',
             '--allow-insecure-localhost',
             '--headless',
             '--disable-gpu',
             '--disable-software-rasterizer',
             '--window-size=1920,925',
             '--log-level=3',
             '--disable-logging'
           ],
           prefs: { 'profile.default_content_setting_values.cookies': 1 }
         }
       }
     }
⠹ Starting ChromeDriver on auto-generated port...

⠸ Starting ChromeDriver on auto-generated port...
⠦ Starting ChromeDriver on auto-generated port...
   Response 200 POST /session (500ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: {
       acceptInsecureCerts: false,
       acceptSslCerts: false,
       browserConnectionEnabled: false,
       browserName: 'chrome',
       chrome: {
         chromedriverVersion: '106.0.5249.61 (511755355844955cd3e264779baf0dd38212a4d0-refs/branch-heads/5249@{#569})',
         userDataDir: 'C:\\Users\\CHRISK~1\\AppData\\Local\\Temp\\scoped_dir3508_2130984217'
       },
       cssSelectorsEnabled: true,
       databaseEnabled: false,
       'goog:chromeOptions': { debuggerAddress: 'localhost:60939' },
       handlesAlerts: true,
       hasTouchScreen: false,
       javascriptEnabled: true,
       locationContextEnabled: true,
       mobileEmulationEnabled: false,
       nativeEvents: true,
       networkConnectionEnabled: false,
       pageLoadStrategy: 'normal',
       platform: 'Windows',
       proxy: {},
       rotatable: false,
       setWindowRect: true,
       strictFileInteractability: false,
       takesHeapSnapshot: true,
       takesScreenshot: true,
       timeouts: { implicit: 0, pageLoad: 300000, script: 30000 },
       unexpectedAlertBehaviour: 'ignore',
       version: '106.0.5249.119',
       webStorageEnabled: true,
       'webauthn:extension:credBlob': true,
       'webauthn:extension:largeBlob': true,
       'webauthn:virtualAuthenticators': true
     }
ℹ Connected to ChromeDriver on port undefined (592ms).
  Using: chrome (106.0.5249.119) on WINDOWS.

 Received session with ID: 505d7b2a2f501f84bb84ab25521d9896

 → Running [before]:
 → Completed [before].

  Running sets the geolocation to Tokyo, Japan and then resets it:
───────────────────────────────────────────────────────────────────────────────────────────────────
 → Running [beforeEach]:
 → Completed [beforeEach].

 → Running command: setGeolocation ({latitude, longitude, accuracy})
   Request GET /json
   Response 200 GET /json (3ms)
[
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:60939/devtools/page/0E6BD7249BAA8DC4EF70CE80FB65079D',
    id: '0E6BD7249BAA8DC4EF70CE80FB65079D',
    title: 'data:,',
    type: 'page',
    url: 'data:,',
    webSocketDebuggerUrl: 'ws://localhost:60939/devtools/page/0E6BD7249BAA8DC4EF70CE80FB65079D'
  }
]
  → Completed command: setGeolocation ({latitude, longitude, accuracy}) (21ms)

 → Running command: navigateTo ('https://www.gps-coordinates.net/my-location')
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/url
   { url: 'https://www.gps-coordinates.net/my-location' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/url (4905ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: null
  }
  → Completed command: navigateTo ('https://www.gps-coordinates.net/my-location') (4907ms)

 → Running command: pause (3000)
  → Completed command: pause (3000) (3008ms)

 → Running command: verify.textContains ('span#addr', 'Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan')

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements          
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (13ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (14ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (37ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (11ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (10ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (25ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (8ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (8ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (25ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (11ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (8ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (22ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (9ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (11ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (24ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (6ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (10ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (20ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (11ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (7ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (21ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (8ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (10ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (21ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (7ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (7ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (17ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (6ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (11ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → Completed command: getText ({selector, suppressNotFoundErrors}, [Function]) (20ms)

 → Running command: getText ({selector, suppressNotFoundErrors}, [Function])
   Request POST /session/505d7b2a2f501f84bb84ab25521d9896/elements  
   { using: 'css selector', value: 'span#addr' }
   Response 200 POST /session/505d7b2a2f501f84bb84ab25521d9896/elements (10ms)
   {
     sessionId: '505d7b2a2f501f84bb84ab25521d9896',
     status: 0,
     value: [ { ELEMENT: '0.40845738720576685-1' } ]
  }
   Request GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text  

   Response 200 GET /session/505d7b2a2f501f84bb84ab25521d9896/element/0.40845738720576685-1/text (8ms)
   { sessionId: '505d7b2a2f501f84bb84ab25521d9896', status: 0, value: '' }
  → NightwatchAssertError

    Testing if element <span#addr> contains text 'Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan' in 5000ms - expected "contains text 'Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan'" but got: "does not contain 'Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan'" (5498ms)

Nightwatch Configuration

// Autogenerated by Nightwatch
// Refer to the online docs for more details: https://nightwatchjs.org/gettingstarted/configuration/
const Services = {}; loadServices();

require('dotenv').config();

const FAILURES_ERRORS_PATH = "./failures"; // Location of the screenshots taken on failures/errors
const REPORTS = "./reports"; // The location where the JUnit XML report files will be saved.

module.exports = {
  // An array of folders (excluding subfolders) where your tests are located;
  // if this is not specified, the test source must be passed as the second argument to the test runner.
  src_folders: ["Scenarios"],

  // See https://nightwatchjs.org/guide/working-with-page-objects/
  page_objects_path: "pages",

  // See https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-commands
  custom_commands_path: ["./custom_commands", "./node_modules/nightwatch-xhr/es5/commands", "./node_modules/nightwatch-mixpanel/es5/commands", "./node_modules/nightwatch-vrt/commands"],

  // See https://nightwatchjs.org/guide/extending-nightwatch/#writing-custom-assertions
  custom_assertions_path: ["./custom_assertions", "./node_modules/nightwatch-xhr/es5/assertions", "./node_modules/nightwatch-mixpanel/es5/assertions", "node_modules/nightwatch-vrt/assertions"],

  // See https://nightwatchjs.org/guide/#external-globals
  globals_path: "./globals.js",

  data_path: "data",
  output_folder: REPORTS, // The location where the JUnit XML report files will be saved.
  live_output: false, // Whether or not to buffer the output in case of parallel running
  detailed_output: true, // By default detailed assertion output is displayed while the test is running. Set this to `false` if you'd like to only see the test case name displayed and pass/fail status. Detailed output is disabled by default when running tests in parallel.
  //parallel_process_delay: 1000, // Specifies the delay (in milliseconds) between starting the child processes when running in parallel mode.

  webdriver: {

    "keep_alive": true // Enable HTTP Keep-Alive. If set to true the keepAlive option is enabled with default settings (keepAliveMsecs = 3000). If set to an object, can specify specify the keepAliveMsecs value.

  },

  // This object contains all the test related options.

  test_settings: {
    default: {
      disable_error_log: false, // Set this to true if you'd like to not display errors during the execution of the test (they are shown at the end always).
      launch_url: "http://localhost", // A url which can be used later in the tests as the main url to load. Can be useful if your tests will run on different environments, each one with a different url.
      silent: true, // Whether to show the extended HTTP traffic command logs from the WebDriver or Selenium server.
      use_xpath: false, //  Use xpath as the default locator strategy
      test_workers: { "enabled": true, "workers": 24 }, // Whether or not to run individual test files in parallel. If set to `true`, runs the tests in parallel and determines the number of workers automatically. If set to an object, can specify specify the number of workers as `"auto"` or a `number`. 
      globals: require('./globals'), // An object which will be made available within the test and can be overwritten per environment
      screenshots: {
        enabled: true,
        path: FAILURES_ERRORS_PATH,
        on_failure: true
      },

      desiredCapabilities: { // An object which will be passed to the Selenium WebDriver when a new session will be created. You can specify browser name for instance along with other capabilities. 
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true,
        browserTag: "mttestcr"
      },
      end_session_on_fail: true, // End the session automatically when the test is being terminated, usually after a failed assertion.
      skip_testcases_on_fail: true, // Skip the remaining testcases (or test steps) from the same test suite (i.e. test file), when one testcase fails.
      detailed_output: true, // By default detailed assertion output is displayed while the test is running. Set this to `false` if you'd like to only see the test case name displayed and pass/fail status. This is especially useful when running tests in parallel.

      webdriver: {
        start_process: true, // When this is enabled, the Webdriver server is run in background in a child process and started/stopped automatically. Nightwatch includes support for managing Chromedriver, Geckodriver (Firefox), Safaridriver, and Selenium Server. Please refer to the Install Webdriver section for details.
        server_path: (Services.chromedriver ? Services.chromedriver.path : '') // Only useful if start_process is enabled.
      },

    },

    firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        alwaysMatch: {
          acceptInsecureCerts: true,
          'moz:firefoxOptions': {
            args: [
              // '-verbose'
              '--window-size=1920,925',
              '--no-sandbox',
            ]
          }
        },
      },
      browserTag: "mttestff",
      webdriver: {
        start_process: true,
        port: 4444,
        server_path: (Services.geckodriver ? Services.geckodriver.path : ''),
        cli_args: [
          // very verbose geckodriver logs
          // '-vv'

        ]
      },

    },

    h_firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        alwaysMatch: {
          acceptInsecureCerts: true,
          'moz:firefoxOptions': {
            args: [
              '--headless',
              // '-verbose'
              '--window-size=1920,925',
              '--no-sandbox',
            ]
          }
        },
      },
      browserTag: "mttestff",
      webdriver: {
        start_process: true,
        port: 4444,
        server_path: (Services.geckodriver ? Services.geckodriver.path : ''),
        cli_args: [
          // very verbose geckodriver logs
          // '-vv'

        ]
      },

    },

    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        loggingPrefs: {
          browser: "ALL"
        },
        javascriptEnabled: true,
        acceptSslCerts: true,
        'goog:chromeOptions': {
          // More info on Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/
          //
          // This tells Chromedriver to run using the legacy JSONWire protocol (not required in Chrome 78)
          w3c: false,
          args: [
            '--no-sandbox',
            //'--ignore-certificate-errors',
            //'--allow-insecure-localhost',
            '--disable-software-rasterizer',
            '--disable-gpu',
            '--window-size=1920,925',
            '--log-level=3',
            '--disable-logging'

          ],
          prefs: {
            "profile.default_content_setting_values.cookies": 1, // Allow sites to save and read cookie data (recommended): 2=Blocked, 1=Allow
          },
        }
      },

      webdriver: {
        start_process: true,
        port: 9515,
        server_path: (Services.chromedriver ? Services.chromedriver.path : ''),
        cli_args: [
          // --verbose
        ]
      },

    },

    h_chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        loggingPrefs: {
          browser: "ALL"
        },
        javascriptEnabled: true,
        acceptSslCerts: true,
        'goog:chromeOptions': {
          // More info on Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/
          //
          // This tells Chromedriver to run using the legacy JSONWire protocol (not required in Chrome 78)
          w3c: false,
          args: [
            '--no-sandbox',
            '--ignore-certificate-errors',
            '--allow-insecure-localhost',
            '--headless',
            '--disable-gpu',
            '--disable-software-rasterizer',
            //'--verbose',
            '--window-size=1920,925',
            '--log-level=3',
            '--disable-logging'

          ],
          prefs: {
            "profile.default_content_setting_values.cookies": 1, // Allow sites to save and read cookie data (recommended): 2=Blocked, 1=Allow
          },
        },

      },

      webdriver: {
        start_process: true,
        port: 9515,
        server_path: (Services.chromedriver ? Services.chromedriver.path : ''),
        cli_args: [
          // --verbose
        ]
      },

    },

    edge: {
      desiredCapabilities: {
        browserName: 'MicrosoftEdge',
        acceptSslCerts: true,
        'ms:edgeOptions': {
          w3c: false,
          // More info on EdgeDriver: https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/capabilities-edge-options
          args: [
          ]
        },
        browserTag: "mtteste"
      },

      webdriver: {
        start_process: true,
        // Download msedgedriver from https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/
        //  and set the location below:
        server_path: "C:\\Windows\\System32\\msedgedriver.exe",
        cli_args: [
          // --verbose

        ]
      },

    },

    h_edge: {
      desiredCapabilities: {
        browserName: 'MicrosoftEdge',
        'ms:edgeOptions': {
          w3c: false,
          // More info on EdgeDriver: https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/capabilities-edge-options
          args: [
            '--no-sandbox',
            //'--ignore-certificate-errors',
            //'--allow-insecure-localhost',
            '--headless',
            '--window-size=1920,925',
            '--log-level=3',
            '--disable-gpu',
            '--disable-software-rasterizer',
          ]
        },
        browserTag: "mtteste"
      },

      webdriver: {
        start_process: true,
        // Download msedgedriver from https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/
        //  and set the location below:
        server_path: "C:\\Windows\\System32\\msedgedriver.exe",
        cli_args: [
          // --verbose
        ]
      },

    },

    safari: {
      test_workers: { "enabled": false },
      desiredCapabilities: {
        acceptInsecureCerts: false,
        browserName: 'safari',
        browserTag: "mttests",
      },
      webdriver: {
        port: 4445,
        start_process: true,
        server_path: '/usr/bin/safaridriver'
      }
    },

    //////////////////////////////////////////////////////////////////////////////////
    // Configuration for when using the Selenium service, either locally or remote,  |
    //  like Selenium Grid                                                           |
    //////////////////////////////////////////////////////////////////////////////////
    selenium_server: {
      // Selenium Server is running locally and is managed by Nightwatch
      selenium: {
        start_process: false,
        host: '127.0.0.1',
        port: 4444,
        launch_url: 'http://localhost',
        server_path: (Services.seleniumServer ? Services.seleniumServer.path : ''),
        screenshots: {
          enabled: true,
          path: FAILURES_ERRORS_PATH,
          on_failure: true
        },
        cli_args: {
          'webdriver.gecko.driver': (Services.geckodriver ? Services.geckodriver.path : ''),
          'webdriver.chrome.driver': (Services.chromedriver ? Services.chromedriver.path : '')
        }
      }
    },

    'selenium.chrome': {
      extends: 'selenium_server',
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true,
        acceptInsecureCerts: true,
        chromeOptions: {
          w3c: false,
          args: [
            '--no-sandbox',
            '--ignore-certificate-errors',
            '--allow-insecure-localhost',
            '--headless',
            '--disable-gpu',
            '--disable-software-rasterizer',
            //'--verbose',
            '--window-size=1920,925',
            '--log-level=3',
            '--disable-logging'

          ]
        }
      },
      webdriver: {
        start_process: false,
      }

    },

    'selenium.firefox': {
      extends: 'selenium_server',
      desiredCapabilities: {
        browserName: 'firefox',
        'moz:firefoxOptions': {
          args: [
            '-headless',
            // '-verbose'
          ]
        }
      }
    }
  }
};

function loadServices() {
  try {
    Services.seleniumServer = require('selenium-server');
  } catch (err) { }

  try {
    Services.chromedriver = require('chromedriver');
  } catch (err) { }

  try {
    Services.geckodriver = require('geckodriver');
  } catch (err) { }
}

Nightwatch.js Version

2.3.9

Node Version

v14.17.1

Browser

Version 106.0.5249.119 (Official Build) (64-bit)

Operating System

Windows 10 Pro

Additional Information

geolocbug

AutomatedTester commented 2 years ago

@pujagani could you add this to the queue for you and Tamsil to investigate? It looks like it could be an interesting quirk with Chrome when in headed/headless mode at lot like how Printing works.

pujagani commented 2 years ago

Sure. Adding it to my queue. Will take a look.

pujagani commented 2 years ago

Thank you for sharing the details. I was able to reproduce the issue using Selenium. Wanted to make sure where the error lies. The conclusion is that this is how ChromeDriver functions in the headless mode. It might be a good idea to raise the issue with the Chrome developers to get a better understanding of why it is the way it is or check if it is a bug on their end. However, to solve this while using CDP one option is to grant permissions for geolocation and the origin and it works as expected. I am sharing the working Selenium Java code snippet below :

public class CDPGeoLocationHeadless {

  public static void main(String[] args)
    throws MalformedURLException, InterruptedException, URISyntaxException {
    ChromeOptions options = new ChromeOptions();
    options.setHeadless(true);

    ChromeDriver driver = new ChromeDriver(options);
    DevTools devTools = driver.getDevTools();
    devTools.createSession();

    List<PermissionType> typeList = new ArrayList<>();
    typeList.add(PermissionType.GEOLOCATION);

    devTools.send(Browser.grantPermissions(
      typeList,
      Optional.of("https://www.gps-coordinates.net/my-location"),
      Optional.empty()));

    devTools.send(Emulation.setGeolocationOverride(Optional.of(35.689487),
                                                   Optional.of(139.691706),
                                                   Optional.of(100)));
    driver.get("https://www.gps-coordinates.net/my-location");

    Thread.sleep(5000);

    if (
      driver.getPageSource().contains("Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan")) {
      System.out.println("In Tokyo!");
    } else {
      System.out.println("Oops should be in Tokyo!");
    }

    devTools.send(Emulation.clearGeolocationOverride());

    driver.get("https://www.gps-coordinates.net/my-location");

    Thread.sleep(5000);

    if (
    driver.getPageSource().contains("Tokyo Metropolitan Government Main Building 1, Midori-no-hashi, Nishi-Shinjuku 2-chome, Shinjuku, 163-8001, Japan")) {
      System.out.println("Oops should not be in Tokyo!");
    } else {
      System.out.println("Original location");
    }

    Thread.sleep(5000);

    driver.quit();
  }
}

Essentially, https://chromedevtools.github.io/devtools-protocol/tot/Browser/#method-grantPermissions commands needs to be called before emulating the geolocation.

pujagani commented 2 years ago

Raised the issue with ChromeDriver https://bugs.chromium.org/p/chromedriver/issues/detail?id=4259

AutomatedTester commented 1 year ago

We need to check that when we pass Nightwatch --headless that when it hits the Selenium Options that it gets translated into --headless=chrome before the session gets created.

https://github.com/nightwatchjs/nightwatch/blob/546195031ff1f7f968a09654754cf4b7b193430e/lib/transport/selenium-webdriver/options.js#L320

Someone just needs to check the output of newSession in chromedriver.

AutomatedTester commented 1 year ago

@pujagani could you see if this

https://github.com/SeleniumHQ/selenium/blob/fc4a104a46d3fd1d4a2f5eb772fcc169b3f38e94/javascript/node/selenium-webdriver/chromium.js#L327-L329

needs to be headless=chrome. Might be worth asking @titusfortner for guidance here as he has commented on the chromium issue.

pujagani commented 1 year ago

There was an issue recently about how headless should be handled in Selenium and a decision was made in Selenium TLC regarding the same. Refer https://github.com/SeleniumHQ/selenium/pull/11099. The consensus was to mark the existing method https://github.com/SeleniumHQ/selenium/blob/fc4a104a46d3fd1d4a2f5eb772fcc169b3f38e94/javascript/node/selenium-webdriver/chromium.js#L327-L329 deprecated and advertise using addArguments methods directly with "headless=chrome" instead. So Nightwatch might need to do that directly. I have reached out to Titus to check regarding the PR status.

pujagani commented 1 year ago

I have confirmed with Titus as well. https://github.com/SeleniumHQ/selenium/pull/11099#issuecomment-1277822807 - it was decided by the Selenium TLC that the existing headless method will be deprecated and accompanied by a blog post. So editing or using it will not be valid in future versions. Instead, the best approach I see for Nightwatch is to use addArguments methods with "headless=chrome" value. This headless mode is production ready but some things may not work like print page as mentioned in https://github.com/SeleniumHQ/selenium/pull/11099#issuecomment-1273540874. So need to check if that causes any breaking changes in Nightwatch. cc: @AutomatedTester

titusfortner commented 1 year ago

Headless=chrome should behave the same way as the production browser. So whatever prevents print pages from working on production browser applies here as well.

chriscuba23 commented 1 year ago

Hi, it seems that after the latest update the setGeolocation method fails even in non headless mode


 → Running command: setGeolocation ({latitude, longitude, accuracy})
   Request GET /json  
  Error
      GET  /json - ECONNREFUSED
Error: connect ECONNREFUSED ::1:54260
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16)
   Request GET /json  (retry 1) 
  Error
      GET  /json - ECONNREFUSED
Error: connect ECONNREFUSED ::1:54260
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16)
   Request GET /json  (retry 2) 
  Error
      GET  /json - ECONNREFUSED
Error: connect ECONNREFUSED ::1:54260
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16)
    Error   Error while running .setGeolocation(): Error: ECONNREFUSED connect ECONNREFUSED ::1:54260
  → Completed command: setGeolocation ({latitude, longitude, accuracy}) (284ms)

node version: v18.12.1 nightwatch version: 2.5.1

chriscuba23 commented 1 year ago

@gravityvi should I create a new bug for the last comment or will it be tackled with the the fix that you linked ?

pujagani commented 1 year ago

The fix above covers it. So I do not think you need to create a new bug for the same.

chriscuba23 commented 1 year ago

Thank you @pujagani

chriscuba23 commented 1 year ago

Goodmorning @beatfactor , unfortunately this still doesn't work in headless mode. Location service isn't enabled automatically in headless mode so every geolocation test fails. Here are the responses of the setGeolocation command both with headless and without it:

headless

→ Running command: setGeolocation ()
   Request GET /json  
   Response 200 GET /json (5ms)
[
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54110/devtools/page/10F47000B798431932C4989225DD1CCA',
    id: '10F47000B798431932C4989225DD1CCA',
    title: 'MarineTraffic Data | Vessels Database',
    type: 'page',
    url: 'https://www.marinetraffic.com/en/data/?asset_type=vessels&columns=flag,shipname,photo,recognized_next_port,reported_eta,reported_destination,current_port,imo,ship_type,show_on_live_map,time_of_latest_position,lat_of_latest_position,lon_of_latest_position,notes',
    webSocketDebuggerUrl: 'ws://localhost:54110/devtools/page/10F47000B798431932C4989225DD1CCA'
  }
]
  → Completed command: setGeolocation () (24ms)

without headless

→ Running command: setGeolocation ()
   Request GET /json  
   Response 200 GET /json (8ms)
[
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/0995FCA8A835A3FB3095B201C1B6C08F',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'MarineTraffic Data | Vessels Database',
    type: 'page',
    url: 'https://www.marinetraffic.com/en/data/?asset_type=vessels&columns=flag,shipname,photo,recognized_next_port,reported_eta,reported_destination,current_port,imo,ship_type,show_on_live_map,time_of_latest_position,lat_of_latest_position,lon_of_latest_position,notes',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/0995FCA8A835A3FB3095B201C1B6C08F'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/977351DF9C6BF71FC02A2F1D2D033A32',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '977351DF9C6BF71FC02A2F1D2D033A32',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://www.googletagmanager.com/ns.html?id=GTM-MPLMZR5',
    type: 'iframe',
    url: 'https://www.googletagmanager.com/ns.html?id=GTM-MPLMZR5',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/977351DF9C6BF71FC02A2F1D2D033A32'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/A4F86227E63FDD0FA4DB18BB73C2F916',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'A4F86227E63FDD0FA4DB18BB73C2F916',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://vars.hotjar.com/box-5e66f98b4ee957db209dc6f63e3d59dd.html',
    type: 'iframe',
    url: 'https://vars.hotjar.com/box-5e66f98b4ee957db209dc6f63e3d59dd.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/A4F86227E63FDD0FA4DB18BB73C2F916'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/2EBD367660618C0B91B2BA1FFA6797A2',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '2EBD367660618C0B91B2BA1FFA6797A2',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://app.hubspot.com/conversations-visitor/2655099/threads/utk/49840bc428054a668105ed99a13f6572?uuid=8eb2867f58d540179c1f36d0acc2f181&amp;mobile=false&amp;mobileSafari=false&amp;hideWelcomeMessage=false&amp;hstc=153128807.62e6f7309af75bcf26f708d1c2a0b009.1672226851406.1672226851406.1672226851406.1&amp;domain=marinetraffic.com&amp;inApp53=false&amp;messagesUtk=49840bc428054a668105ed99a13f6572&amp;url=https%3A%2F%2Fwww.marinetraffic.com%2Fen%2Fdata%2F%3Fasset_type%3Dvessels&amp;inline=false&amp;isFullscreen=false&amp;globalCookieOptOut=null&amp;isFirstVisitorSession=true&amp;isAttachmentDisabled=false&amp;enableWidgetCookieBanner=false&amp;isInCMS=false&amp;hubspotUtk=62e6f7309af75bcf26f708d1c2a0b009',
    type: 'iframe',
    url: 'https://app.hubspot.com/conversations-visitor/2655099/threads/utk/49840bc428054a668105ed99a13f6572?uuid=8eb2867f58d540179c1f36d0acc2f181&mobile=false&mobileSafari=false&hideWelcomeMessage=false&hstc=153128807.62e6f7309af75bcf26f708d1c2a0b009.1672226851406.1672226851406.1672226851406.1&domain=marinetraffic.com&inApp53=false&messagesUtk=49840bc428054a668105ed99a13f6572&url=https%3A%2F%2Fwww.marinetraffic.com%2Fen%2Fdata%2F%3Fasset_type%3Dvessels&inline=false&isFullscreen=false&globalCookieOptOut=null&isFirstVisitorSession=true&isAttachmentDisabled=false&enableWidgetCookieBanner=false&isInCMS=false&hubspotUtk=62e6f7309af75bcf26f708d1c2a0b009',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/2EBD367660618C0B91B2BA1FFA6797A2'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/5AC50346FE1FF47789F09AD40D6C0C04',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '5AC50346FE1FF47789F09AD40D6C0C04',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://aax-eu.amazon-adsystem.com/s/iu3?cm3ppd=1&amp;d=dtb-pub&amp;csif=t&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;dl=n-smaato_n-mediagrid_n-index_n-sharethrough_ym_rbd_n-MediaNet_smrt_cnv_sovrn_n-Outbrain&amp;dcc=t',
    type: 'iframe',
    url: 'https://aax-eu.amazon-adsystem.com/s/iu3?cm3ppd=1&d=dtb-pub&csif=t&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&dl=n-smaato_n-mediagrid_n-index_n-sharethrough_ym_rbd_n-MediaNet_smrt_cnv_sovrn_n-Outbrain&dcc=t',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/5AC50346FE1FF47789F09AD40D6C0C04'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/C01C64A0EF8D5C3FB02AC98E97995345',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'C01C64A0EF8D5C3FB02AC98E97995345',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    type: 'iframe',
    url: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/C01C64A0EF8D5C3FB02AC98E97995345'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/3B684CE6480ACBAE8FB6A4E399E70E34',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '3B684CE6480ACBAE8FB6A4E399E70E34',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    type: 'iframe',
    url: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/3B684CE6480ACBAE8FB6A4E399E70E34'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/5DDE18222B98F0981FD13A456B33821D',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '5DDE18222B98F0981FD13A456B33821D',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    type: 'iframe',
    url: 'https://79f40063fb076eb3b3ff8aefc694f703.safeframe.googlesyndication.com/safeframe/1-0-40/html/container.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/5DDE18222B98F0981FD13A456B33821D'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/B60261F35BA8159E4EAA092134A75459',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'B60261F35BA8159E4EAA092134A75459',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://gum.criteo.com/syncframe?origin=publishertag&amp;topUrl=www.marinetraffic.com&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA#{%22uid%22:{%22origin%22:0},%22lwid%22:{%22origin%22:0},%22bundle%22:{%22origin%22:0},%22optout%22:{%22value%22:false,%22origin%22:0},%22sid%22:{%22origin%22:0},%22tld%22:%22marinetraffic.com%22,%22topUrl%22:%22www.marinetraffic.com%22,%22version%22:132,%22cw%22:true,%22lsw%22:true,%22origin%22:%22publishertag%22,%22requestId%22:%220.07198113635439451%22}',
    type: 'iframe',
    url: 'https://gum.criteo.com/syncframe?origin=publishertag&topUrl=www.marinetraffic.com&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA#{%22uid%22:{%22origin%22:0},%22lwid%22:{%22origin%22:0},%22bundle%22:{%22origin%22:0},%22optout%22:{%22value%22:false,%22origin%22:0},%22sid%22:{%22origin%22:0},%22tld%22:%22marinetraffic.com%22,%22topUrl%22:%22www.marinetraffic.com%22,%22version%22:132,%22cw%22:true,%22lsw%22:true,%22origin%22:%22publishertag%22,%22requestId%22:%220.07198113635439451%22}',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/B60261F35BA8159E4EAA092134A75459'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/C9F72381BD495641AEDE994871D527B0',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'C9F72381BD495641AEDE994871D527B0',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://tpc.googlesyndication.com/sodar/sodar2/225/runner.html',
    type: 'iframe',
    url: 'https://tpc.googlesyndication.com/sodar/sodar2/225/runner.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/C9F72381BD495641AEDE994871D527B0'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/DF03DC8A584DB378D2E3870AB71E3310',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'DF03DC8A584DB378D2E3870AB71E3310',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://www.google.com/recaptcha/api2/aframe',
    type: 'iframe',
    url: 'https://www.google.com/recaptcha/api2/aframe',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/DF03DC8A584DB378D2E3870AB71E3310'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/35CEFCC925898F7CB6BC93D12A91EA24',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '35CEFCC925898F7CB6BC93D12A91EA24',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://eu-u.openx.net/w/1.0/pd?plm=6&amp;ph=3da0de1d-b4a8-4cbd-9d58-8d6ed130adaa&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;us_privacy=1---',
    type: 'iframe',
    url: 'https://eu-u.openx.net/w/1.0/pd?plm=6&ph=3da0de1d-b4a8-4cbd-9d58-8d6ed130adaa&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&us_privacy=1---',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/35CEFCC925898F7CB6BC93D12A91EA24'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/FD8EA26CF13BA081C87CEAD587CBFD79',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'FD8EA26CF13BA081C87CEAD587CBFD79',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://ads.pubmatic.com/AdServer/js/user_sync.html?kdntuid=1&amp;p=157884&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;us_privacy=1---',
    type: 'iframe',
    url: 'https://ads.pubmatic.com/AdServer/js/user_sync.html?kdntuid=1&p=157884&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&us_privacy=1---',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/FD8EA26CF13BA081C87CEAD587CBFD79'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/DFF3611931873C57C115210D013293D1',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'DFF3611931873C57C115210D013293D1',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://js-sec.indexww.com/um/ixmatch.html',
    type: 'iframe',
    url: 'https://js-sec.indexww.com/um/ixmatch.html',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/DFF3611931873C57C115210D013293D1'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/1383ADE2F297FCB2FA705679E4841B38',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '1383ADE2F297FCB2FA705679E4841B38',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://eb2.3lift.com/sync?gdpr=true&amp;cmp_cs=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;us_privacy=1---&amp;&amp;ld=1',
    type: 'iframe',
    url: 'https://eb2.3lift.com/sync?gdpr=true&cmp_cs=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&us_privacy=1---&&ld=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/1383ADE2F297FCB2FA705679E4841B38'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/A0383F99D7B6F9AC1CEF5845E8D6C680',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'A0383F99D7B6F9AC1CEF5845E8D6C680',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://eus.rubiconproject.com/usync.html?gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;us_privacy=1---',
    type: 'iframe',
    url: 'https://eus.rubiconproject.com/usync.html?gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&us_privacy=1---',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/A0383F99D7B6F9AC1CEF5845E8D6C680'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/A210E84656B21FD0FE7C172B8AC67AD8',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'A210E84656B21FD0FE7C172B8AC67AD8',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://onetag-sys.com/usync/?cb=1672226856707&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;us_privacy=1---',
    type: 'iframe',
    url: 'https://onetag-sys.com/usync/?cb=1672226856707&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&us_privacy=1---',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/A210E84656B21FD0FE7C172B8AC67AD8'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/CE5EF8D9189F3B2831AD56B5BA7AA706',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'CE5EF8D9189F3B2831AD56B5BA7AA706',
    parentId: '0995FCA8A835A3FB3095B201C1B6C08F',
    title: 'https://google-bidout-d.openx.net/w/1.0/pd?plm=5',
    type: 'iframe',
    url: 'https://google-bidout-d.openx.net/w/1.0/pd?plm=5',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/CE5EF8D9189F3B2831AD56B5BA7AA706'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/33FEEEECB013624478135397D9311E5A',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '33FEEEECB013624478135397D9311E5A',
    parentId: '5DDE18222B98F0981FD13A456B33821D',
    title: 'https://googleads.g.doubleclick.net/xbbe/pixel?d=CInv9gIQxJ_v-gEYn7XHfTAB&amp;v=APEucNU7Oc6sTxTPJqdjO4cLFzp_yX7e1Ou7LuL1umimK9Mco82Ii_aCM3HTxxVwGEvCoadVShpaFc6A691JNfzUNLPXsAamdxUB8S5zSMPaf6e69CVFnIsmVZomClT6M1cdc1u58cZKpO8mzkKnEA3lH1UQbLa5YSHw_8VTNroWVuq5BX7QIFtUaSNKwRUthcG57Oot5BPM7vVmCtxLC-lKRkoqmgY6G1B_Vuw6HXF9tEkwFgNsciKCPv48xon5zpZTrYa69ei3BLXoONsGPQ8gZTcuLRIIAKv7dU_TisH0nxchZbMsBlMkU4N7gqwu_aAkQoPTrd-aT2vn1lsQAuXu5MMxOaqU4FFMvHjIUBDOmiYmDDpfLXw-bXW1tPxY1V5xXps4RZEQ-H-cCJ1R9SE9jy5IjBuTvtQC-mD-7YupTZzuF1qLj299IAP_Lzyc_LRMO3PkV0RxTz_CXyLKCP7Q_a6odbGIfbXE-yB5Q3mm4MqzLlCjIPA_fnPmCz-VwFuHY1DwOu7Ro6KEAd09F9DHyalzjLCufdql0hMN8_nt_q2rbyiUxT83ljlNM0L4vl5ZFt_OIS3xm1xI3LR7CnY1vQpAe86SmOVbmxgfSzijaGjz4WcPL8Fcvp01K0QgWKMV1KERetMjOF-RbMw-e-5BGxJYZ3C1QewoU0bITaeHswfoE-5aJ_wLx8T4yOPRhDmLg4XMk8p4CiAZsvuvFZyH4BPS8Nj2dAo5W3XZ-ywh_K-Zrg1WnrY5f-7m3q7A2SugqqQhFGALFeRLY30pxymV5EZ_Zb-y7m9r5YdmnsfcYrSlhMRpcYyAM6siR8tkd0tWjfJ9oVxFfQIm0aShB_N-W4V-LtIZ8j82_a7reGXpVP77P1_xO3OIsS5o-PtDRe0FLyfW7pwLeq8yGcXQwvCCdrf_cmUHjRO4_ZkctJgmiNLOq856qEY1stYpjsAjcAigPEwVpnNLX4JHUlmA0azZiChCsz2YjPoURGIPDV0zl6XWtg5OBzDBushzoPIgyZ8ztBeDv16jtKfSlcmHyicW_yMI1pdjzSX-VHIVr3j_r7ZNeDw8c0Hsytv0nxTXJxUN-4I8Ei3sxUl6bJMNISpNpTuAQiCqXUlr5Lbs_P9f0siAC4AL9-hI39urnqEHkvwwSUygkqcBwaDjX07F_W_B8wZj9L7I0XvwUU0H6BDvmI2qlNanymLxzWTZG3z9dXMFM3Z1cyg8v8_mX9XRJRKFO6dpqc6vLRT1BaR-V3nVED3dsQ65iHQsAx7LdqHhVdUZXgRMU4_iAjXT2YuNnOwlTZUBt5tReFNNvhmZTLaWZF2CldJskgLDRG6vQJqqRgKH1WqNMGKyMD-pIOYeGlmBrKCHjxoZXHqd2c29JHbvUQOpuzzxIaCmTqf7n8IIhIKp6aHyncOG6QZIC0DcoAw6USIGFdw670MgU3lGwW90uHoVLJVQ29Nm9kEtcIQX9SuoplFkgA2TKct6ArFqKfAlz-7pYu4KvPOFIw-6NkGsOLSBKt83zruqrDRyhGU88bw5-dFtJWVWFR0MVbMTBTCXiaZcNRn4G5OGbx8LxEyCHanOnSLT0Hqkq-aypKSm78y58oo0dK2sUNqJCDu9Xy-7MIvsAuVgtOfMXJ6h2LD3FFA4Y7uCAIR7y61OhuMQLr126pjUiu0YEjBHuOamloMtLLqQvyl1ySq22nudSdaFFI8K1eUuJ1NNmYH44V0ddnIDVZAsTmp3axB5NMqs2k0zHLAEITtuP3DCM3sQRLwPLseeJzQVAL5WOJrB2JzkFn8l0d-Eqhvx9RGHVaL9l8HGsoSyPDuYcPo8L0OQfCFdbjUIRuGhkIDknZnOLEbA7IV3wiYdsFCejCF3lxlqP9vdtHnXL0WTz0xhxdB0sqv16-bqrQe_dV8JG-uRj9T6Btm1hTYC_1PZzWZ3ca08Mcdf3EHP9p4Dm7MHfLpwsZHfQiTNSy16x8C7SGTqkHTAuwaSYIOco-vA_5zT9kZxfnazJ5GKFxR1SjBRWzzg3IJlE4pdQxkHgpfEoKgHBahynfain7_C1QlUiXFzLxWWwOsb7rTkVpoXGuVRt-ejVodYUFeg7qFVqOTKUGVI-3TqxPhTTbbzm8QdAYZQ43QkgyjLVInTm_Z0PskhdHMr3CD2dZSI_28DlwI_D7-JDd_SsR2iyoTh2DhmqXUC0jX1WuhPbJo2H__63gJEEgtKiYJt9CRnfLJDUWMkfSxCgjtP_Es1Rh3GcaP1i88soL-iCPfN3JGj_Ck2DCZrvclFAsgY7PmfOnQe-7NrfBx8rQcm6IDrClDy5DmC-D3TgfIWkyc4-zNxMAexky3CNJQt0QhPxVVcuk7FvhMdF22hFvmQB7e1lY_RBc9gMW6JLZcphGalnAf16l3kwNh9Lcassq4sBkumAhfJ4HqNHXDszpPXagttKO0OIHAeZMxHfAbRZWZP2QUPIRMt0QdzGml4AzMbzASiQifBy_enMK53L9YRkkKXeVDbagjV5gEs2rUhX9zNVv2iyA_rVXWus837XH-1NDSiDhvGff_BacZGwzs4qAVPExI0Co5HpHUAXFJRPyQW7hQadYg0LAP5FY_9-U2EINzCNj4nKeYc-ajiCX0MpiEPUVdTEd3m1fekAs5hKP8bv6ZUr3NCziDL1FY9vY4v_AssgctRALatvwTaepv172AiFFrztpDgC5GXLyJjeh5zFGEFPPPGHor8M-EXKZfpNY4KYB-uu2HqanWNhOHIOLQYw2yahZ6-3A_u0xK_zTr3qXuViBKA0TgQ4BlM3i0F295ziI7pN1nC6NgAzE0DXswwSHvz_HGpaznuoNDr67eP0Opi4d7X4MocO5c7qKBjQHt_F_-Dro0kI3gZckWrhdYQ0eRm9DeUdGvbdrs4ux_Q2uEXiNVRM5QBNSF9Gnr7_omMQcTwoXH_RgGRVlvpZdGDm6O7ZD_dz9hsQyl0jzZYsCiWd9cgpRccBnKdwyxVb5TExyqsfjn52MXl9icgdQY_ZlL5qSkVZ_MaAcJOnj4sYoAGy1Qs6V-fHIDGY_ne33uz4-j0AkejQdrIkIgPpDPUG9ME4J3eu--PjxU7oxTfdzJLnZbPA39IQ-8blQYFofJwDS1jrXUaqtxmNadB4oZgKr6xye00PvJMnUtt4Z3xN8IDlv1URNUCNr-bUwKCeJCOBjyqyI1uSPirFI6tAOzPRV6j2vJV',
    type: 'iframe',
    url: 'https://googleads.g.doubleclick.net/xbbe/pixel?d=CInv9gIQxJ_v-gEYn7XHfTAB&v=APEucNU7Oc6sTxTPJqdjO4cLFzp_yX7e1Ou7LuL1umimK9Mco82Ii_aCM3HTxxVwGEvCoadVShpaFc6A691JNfzUNLPXsAamdxUB8S5zSMPaf6e69CVFnIsmVZomClT6M1cdc1u58cZKpO8mzkKnEA3lH1UQbLa5YSHw_8VTNroWVuq5BX7QIFtUaSNKwRUthcG57Oot5BPM7vVmCtxLC-lKRkoqmgY6G1B_Vuw6HXF9tEkwFgNsciKCPv48xon5zpZTrYa69ei3BLXoONsGPQ8gZTcuLRIIAKv7dU_TisH0nxchZbMsBlMkU4N7gqwu_aAkQoPTrd-aT2vn1lsQAuXu5MMxOaqU4FFMvHjIUBDOmiYmDDpfLXw-bXW1tPxY1V5xXps4RZEQ-H-cCJ1R9SE9jy5IjBuTvtQC-mD-7YupTZzuF1qLj299IAP_Lzyc_LRMO3PkV0RxTz_CXyLKCP7Q_a6odbGIfbXE-yB5Q3mm4MqzLlCjIPA_fnPmCz-VwFuHY1DwOu7Ro6KEAd09F9DHyalzjLCufdql0hMN8_nt_q2rbyiUxT83ljlNM0L4vl5ZFt_OIS3xm1xI3LR7CnY1vQpAe86SmOVbmxgfSzijaGjz4WcPL8Fcvp01K0QgWKMV1KERetMjOF-RbMw-e-5BGxJYZ3C1QewoU0bITaeHswfoE-5aJ_wLx8T4yOPRhDmLg4XMk8p4CiAZsvuvFZyH4BPS8Nj2dAo5W3XZ-ywh_K-Zrg1WnrY5f-7m3q7A2SugqqQhFGALFeRLY30pxymV5EZ_Zb-y7m9r5YdmnsfcYrSlhMRpcYyAM6siR8tkd0tWjfJ9oVxFfQIm0aShB_N-W4V-LtIZ8j82_a7reGXpVP77P1_xO3OIsS5o-PtDRe0FLyfW7pwLeq8yGcXQwvCCdrf_cmUHjRO4_ZkctJgmiNLOq856qEY1stYpjsAjcAigPEwVpnNLX4JHUlmA0azZiChCsz2YjPoURGIPDV0zl6XWtg5OBzDBushzoPIgyZ8ztBeDv16jtKfSlcmHyicW_yMI1pdjzSX-VHIVr3j_r7ZNeDw8c0Hsytv0nxTXJxUN-4I8Ei3sxUl6bJMNISpNpTuAQiCqXUlr5Lbs_P9f0siAC4AL9-hI39urnqEHkvwwSUygkqcBwaDjX07F_W_B8wZj9L7I0XvwUU0H6BDvmI2qlNanymLxzWTZG3z9dXMFM3Z1cyg8v8_mX9XRJRKFO6dpqc6vLRT1BaR-V3nVED3dsQ65iHQsAx7LdqHhVdUZXgRMU4_iAjXT2YuNnOwlTZUBt5tReFNNvhmZTLaWZF2CldJskgLDRG6vQJqqRgKH1WqNMGKyMD-pIOYeGlmBrKCHjxoZXHqd2c29JHbvUQOpuzzxIaCmTqf7n8IIhIKp6aHyncOG6QZIC0DcoAw6USIGFdw670MgU3lGwW90uHoVLJVQ29Nm9kEtcIQX9SuoplFkgA2TKct6ArFqKfAlz-7pYu4KvPOFIw-6NkGsOLSBKt83zruqrDRyhGU88bw5-dFtJWVWFR0MVbMTBTCXiaZcNRn4G5OGbx8LxEyCHanOnSLT0Hqkq-aypKSm78y58oo0dK2sUNqJCDu9Xy-7MIvsAuVgtOfMXJ6h2LD3FFA4Y7uCAIR7y61OhuMQLr126pjUiu0YEjBHuOamloMtLLqQvyl1ySq22nudSdaFFI8K1eUuJ1NNmYH44V0ddnIDVZAsTmp3axB5NMqs2k0zHLAEITtuP3DCM3sQRLwPLseeJzQVAL5WOJrB2JzkFn8l0d-Eqhvx9RGHVaL9l8HGsoSyPDuYcPo8L0OQfCFdbjUIRuGhkIDknZnOLEbA7IV3wiYdsFCejCF3lxlqP9vdtHnXL0WTz0xhxdB0sqv16-bqrQe_dV8JG-uRj9T6Btm1hTYC_1PZzWZ3ca08Mcdf3EHP9p4Dm7MHfLpwsZHfQiTNSy16x8C7SGTqkHTAuwaSYIOco-vA_5zT9kZxfnazJ5GKFxR1SjBRWzzg3IJlE4pdQxkHgpfEoKgHBahynfain7_C1QlUiXFzLxWWwOsb7rTkVpoXGuVRt-ejVodYUFeg7qFVqOTKUGVI-3TqxPhTTbbzm8QdAYZQ43QkgyjLVInTm_Z0PskhdHMr3CD2dZSI_28DlwI_D7-JDd_SsR2iyoTh2DhmqXUC0jX1WuhPbJo2H__63gJEEgtKiYJt9CRnfLJDUWMkfSxCgjtP_Es1Rh3GcaP1i88soL-iCPfN3JGj_Ck2DCZrvclFAsgY7PmfOnQe-7NrfBx8rQcm6IDrClDy5DmC-D3TgfIWkyc4-zNxMAexky3CNJQt0QhPxVVcuk7FvhMdF22hFvmQB7e1lY_RBc9gMW6JLZcphGalnAf16l3kwNh9Lcassq4sBkumAhfJ4HqNHXDszpPXagttKO0OIHAeZMxHfAbRZWZP2QUPIRMt0QdzGml4AzMbzASiQifBy_enMK53L9YRkkKXeVDbagjV5gEs2rUhX9zNVv2iyA_rVXWus837XH-1NDSiDhvGff_BacZGwzs4qAVPExI0Co5HpHUAXFJRPyQW7hQadYg0LAP5FY_9-U2EINzCNj4nKeYc-ajiCX0MpiEPUVdTEd3m1fekAs5hKP8bv6ZUr3NCziDL1FY9vY4v_AssgctRALatvwTaepv172AiFFrztpDgC5GXLyJjeh5zFGEFPPPGHor8M-EXKZfpNY4KYB-uu2HqanWNhOHIOLQYw2yahZ6-3A_u0xK_zTr3qXuViBKA0TgQ4BlM3i0F295ziI7pN1nC6NgAzE0DXswwSHvz_HGpaznuoNDr67eP0Opi4d7X4MocO5c7qKBjQHt_F_-Dro0kI3gZckWrhdYQ0eRm9DeUdGvbdrs4ux_Q2uEXiNVRM5QBNSF9Gnr7_omMQcTwoXH_RgGRVlvpZdGDm6O7ZD_dz9hsQyl0jzZYsCiWd9cgpRccBnKdwyxVb5TExyqsfjn52MXl9icgdQY_ZlL5qSkVZ_MaAcJOnj4sYoAGy1Qs6V-fHIDGY_ne33uz4-j0AkejQdrIkIgPpDPUG9ME4J3eu--PjxU7oxTfdzJLnZbPA39IQ-8blQYFofJwDS1jrXUaqtxmNadB4oZgKr6xye00PvJMnUtt4Z3xN8IDlv1URNUCNr-bUwKCeJCOBjyqyI1uSPirFI6tAOzPRV6j2vJV',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/33FEEEECB013624478135397D9311E5A'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/F6186F595201F1ACF2120B65649576A1',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'F6186F595201F1ACF2120B65649576A1',
    parentId: '5AC50346FE1FF47789F09AD40D6C0C04',
    title: 'https://ssum-sec.casalemedia.com/usermatch?cb=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fgdpr%3D1%26gdpr_consent%3DCPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA%26ex%3Dindex.com%26id%3D%24UID&amp;gdpr=1&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;s=192259&amp;C=1',
    type: 'iframe',
    url: 'https://ssum-sec.casalemedia.com/usermatch?cb=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fgdpr%3D1%26gdpr_consent%3DCPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA%26ex%3Dindex.com%26id%3D%24UID&gdpr=1&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&s=192259&C=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/F6186F595201F1ACF2120B65649576A1'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/3C9FC5693485C7947B5AA05938FD71AC',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '3C9FC5693485C7947B5AA05938FD71AC',
    parentId: '5AC50346FE1FF47789F09AD40D6C0C04',
    title: 'https://match.sharethrough.com/jwumXNuB/v1/?callback=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fex%3Dsharethrough.com%26id%3D%24UID&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;gdpr=1',
    type: 'iframe',
    url: 'https://match.sharethrough.com/jwumXNuB/v1/?callback=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fex%3Dsharethrough.com%26id%3D%24UID&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&gdpr=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/3C9FC5693485C7947B5AA05938FD71AC'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/AEF106DC42BAAEF45E8FCD409B3DB282',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'AEF106DC42BAAEF45E8FCD409B3DB282',
    parentId: '5AC50346FE1FF47789F09AD40D6C0C04',
    title: 'https://sync-amz.ads.yieldmo.com/tamptsync?callback=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fex%3Dym.com%26id%3D%24UID&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;gdpr=1',
    type: 'iframe',
    url: 'https://sync-amz.ads.yieldmo.com/tamptsync?callback=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fex%3Dym.com%26id%3D%24UID&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&gdpr=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/AEF106DC42BAAEF45E8FCD409B3DB282'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/A29E8D48BF9B17E1717781A8800B1FC8',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'A29E8D48BF9B17E1717781A8800B1FC8',
    parentId: '5AC50346FE1FF47789F09AD40D6C0C04',
    title: 'https://eus.rubiconproject.com/usync.html?p=a9eu&amp;endpoint=eu&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;gdpr=1',
    type: 'iframe',
    url: 'https://eus.rubiconproject.com/usync.html?p=a9eu&endpoint=eu&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&gdpr=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/A29E8D48BF9B17E1717781A8800B1FC8'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/B8BCADE29E59D23CFD8C20D321659607',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: 'B8BCADE29E59D23CFD8C20D321659607',
    parentId: '5AC50346FE1FF47789F09AD40D6C0C04',
    title: 'https://ap.lijit.com/beacon/amazon?url=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fid%3D%24UID&amp;ex=sovrn.com&amp;gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&amp;gdpr=1',
    type: 'iframe',
    url: 'https://ap.lijit.com/beacon/amazon?url=https%3A%2F%2Faax-eu.amazon-adsystem.com%2Fs%2Fecm3%3Fid%3D%24UID&ex=sovrn.com&gdpr_consent=CPks0YAPks0YAAKAtAENCwCsAP_AAH_AAAwIJMtd_H__bW9r-f5_aft0eY1P9_rz7uQzDhfNk-4F3L_W_LwX52E7NF36tq4KmR4ku1LBIUNlHMHUDUmwaokVryHsak2cpTNKJ7BEknMZOydYGF9vmxtj-QKY5v5_d3bx2D-t_9v-39z3z81Xn3d53-_02PCdV5_9Dfn9fR_b89KP9_78v4v8_____3_e__3_7997_H4JMgEmGrcQBdmWODNoGEUCIEYVhIRQKACCgGFogIAHBwU7KwCfWECABAKAIwIgQ4AowIBAAAJAEhEAEgRYIAAARAIAAQAIBEIAGBgEFgBYGAQAAgGgYohQACBIAZEBEUpgQFQJBAS2VCCUF0hphAFWWAFAIjYKABEEgIrAAEBYOAYIkBKxYIEmKN8gBGCFAKJUK1FJ6YAA.f_gAAAAAAAAA&gdpr=1',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/B8BCADE29E59D23CFD8C20D321659607'
  },
  {
    description: '',
    devtoolsFrontendUrl: '/devtools/inspector.html?ws=localhost:54438/devtools/page/795B7AAEE08B14C10ACF50B9265830C8',
    faviconUrl: 'https://www.marinetraffic.com/favicon_n.ico',
    id: '795B7AAEE08B14C10ACF50B9265830C8',
    parentId: '3B684CE6480ACBAE8FB6A4E399E70E34',
    title: 'https://googleads.g.doubleclick.net/xbbe/pixel?d=CKiUrQEQh_KA9gIYi7uq0QEwAQ&amp;v=APEucNU22jhr1sIYir_wuGnbQKKMAVqkAmzvjuhKAWmzTs1y0pv18CrFeu2zo2sGnJOWr_9BUQpewGlOObHNvIkvKfvqIkO_2UuzKV-Be36eW0N6mbiCzJMYYv-0-S3lTG3N_T2N8Iw32f8NcZhM0Ao4knc7BgEksoHCvJ0QPRjNWgYtuiI3nZg0XifzNWtFieMtFa4e0y5VtUiCjMjSNGj_jn4Wehd7hK31lHs6ZXebTqKyr7oPXxgLo-x6f8yPXqpnI9CUZcnVqZbP8OfljrCelVk7Hj88EnjNTk739CUMUbL2BAoP9vFwIV2zEXmauix9GDXnogsc5HlwaRuYkX1Nzt4GMnguvXppHdpf0Wm4Cyia7Gti2PF59M8xJUyJ6udBg8Eb_IkEPni8VinYd6iBp4zQwJW_PzZfe6qdiqMrHkncmFdZ3ZmcVToFaUvL90N0Zb-Wc9sPMHbuOyKNIbbWIMAycsw2rsTwZqy0ridRXynO_PCWTxPawWe-yG2a_oQ4FgS9z-o3OQ7JatOXd4jghdN_AZ2Xh_bi5jDht7JMVZnLPUxl8Teiucih6BvQsYqew55ipkj1_tCoTLuRJDswmHubHtykNUmsGwE2WPGx9nFYDGoXJAuevVtUk_EtixNuKtFyas0p_q06OTz1lAZXsHqQ5SD_I0JKEb5UBxjDHtndG11OdhRWh79RJxtq1nUNr3mJqeJwQsu7bsX73clwCsfbzIbSOEPID8JnhgZ772OPGmp1ZzgodsPvuVw49a0Qg-UmEeiV3MYBbUdjnJcrNPK5iYWWBwFxHGM1TMb_QiCYzwQaIJSBarVFIAJKHK8QTRTH8DYOYTxjueAE0_zJjdfbnjHhroeoot7lXAasA4Q4tCmSfIJ-VQtj-wkp_VPdan27pDYmW1rAlJlhS4lIg9qkVo8zL44_tPnHzeZLCOQUoDvzGwGLtb5beGq1YggS8dfpuNladAar8NWBFCghBTNAn-shU4BrSqQphqGRLzbyv8eqYnalEYoHl8HrZJ-p_hR3zDydvL0IT530Fo2-6Zp5O3quup6wzTmGO5eW2UnPPt_AKJ-XO1UVdYU2b_Pz0gzQUkGUSocVO2w3ieUE8BDHaFKVoRxsDp1776KPusJPBpWFmlkBfjmMzD6YA2zhqtd1dmVf0Ymd4-fFPzH48E_09f5bvngG2Bh9Bug1o7iCdV3EgXawOsoVoLOKOKiZWW3peAz8037BbAHehqNXOCOy_yzl53o2rQzans17iSMhQn64j6IpuOl6CIPIAl1iCH1lsl4zKgOUt3MREsWmA1ap-la2BKo1_AqZwjYnS3wxYu-sHCmPWPQPkXbILoHOD4TokzJIZo2KOYa87ogT8bR50mRTG8yW0R3bNCk9EWo2Hd44HbhzkuY7rJL5zkDNu0UZnwJPKux_2XWAfku152cAy1ouRlwzSc4MRUWsVie-MdTAKIzDZR4cSfH034yuYtLgbNN_rvy-mCgzeEYiDJJTS1VFj3y0_fHa621T51N_dBuVBbEyTYit6EXZKEcmBOvWdZQSdIg7W99LkxVCsSm7vlHaYPxz_3oGQcdEEA_47hqpn2SzRoixnrTUkECcCMmfgI4eMxxZYPN_JWxh4gobe0sKtsTlKHxzri8TASEjwok9DbEXad0qWg6NKvMXQm1phXQM39k9WHrqb6M5UQT5sROsLvrSD0S6obfxw1kw2BXZU5PL3Jee1RpwVDGZqIM77L92BPKW3tHieSpbnLocwG3WiIl-I_AGiUa0z4I3SukquGcjw2LWH8sh52dM3OhuYZUfZEzTfTqlRhvSA6IB5lMUkOJC_CCotXrYSrBVwDDYbowXY5bo0MqaPO2Gwd17kDxJ96WH0ItWYBqpkqpDuZMIyuThvVOLNfTN3MW1_hlLYpPLcrxScCjxPnVTNRH2dIAxyjF6ijyHntpd54Ev0B21N5i2jg8oOmFfxs_SnoMv6uzw12A1tHCnusSzTHi3LABGwxwgjrk6-hIaBUoRgPpux8o_OeM3PZyI3h4K-m-RWsCQ3jI-9tl8wPS1K9Dk-XfcRgyhH_1Ch4lueIe-tEgYWN6CRYA8ZGHuB4zfdk0Wq3VL5TpITOT2QLbqq3ZSy-MduxlHTgGPD2AC_bmmWK6xDt1M3_Resqv9-9PnaeOddqq8m8UEhLZq8NkAjOH6MOkGrJ8-H_WFUz3BqXWm2CNap19EoQbIKuFfj3uMwATw2bOa6oUhdYMQsKCeghq2Wkcg2749AB-ebpGQpBvd6YP5hrZlE6OPwOuNShA0CmjpeV0pFUeqYpzwNmvJ3CnHqGTaEgEzdtuA2NjCyPwsc6KCQpy_8DONMUTLGD6sj9kYQ7yneX6Dls5ERW0L4szHys1yrJ4np8zloVmH2_FZAlu3YVRrzGnHaz34BusUOjgPJqX_dtkVDXwWK7apxUGER9M8eMYLWDbOOB9qMNWtDWpc1PUe7e2PtvC_CxUTFOOGqmm68LqEeMNuUlvcn95but9R1BiSSrBSf4Y0BLLou9_ABGmn_RyEE5ezowqSwYB9sVNbjj8b91BKz7TQmuSIXL2O-qxk0RJeabA3mMbNxZRG0mi03oOuTD3iMkds_NB6UE6FopROK_kZHW752pFubkP4oIS9MJLK4UpRXoNwNXc_f9ZpPxh1NZwMk-NFCRIasI0lmtSxQ_E_U19v7s9dR90HrobJSZUQ02jRmtt4i2h-rmY5STKNFezP2g_KKti-R3wk7eoSIn5TaR-uol-8PqAiZN0Ppb4Fw5yN_eSQ2WHPA6RQ0OxwqG7eupBdBGpJjOBdOyABOl-78MBACQ4pnpSJmV8XOweNNPyM7c428p363qlhflGcRd00sonw27hQCUNl7hI10loUmZLZMzStMJW07FdIML1ho6beiRRMQxxxq_eL5OyjoLLHbAKmRbu8vWgYVvqfbdgQQSC4aBPd-BHsM1C7OCzzuYCRjdXaPe-qSVHo1DV5OvRQX_4-zG1ATIICwMQEphLcVRQeiiBgnbHsddguE8AC6ZCrUSBBptQo3bSflpvM6OBYi07U58In7-XA1FhME6lck4yMyxWRAoMPP1RyByVm7cVO2P5Obu7HlRnav_wzjlBHaE5cfcB1JplGDbewZUVNR0b4r27SMF569PbKOjXsdn7S3CerXKl_mmkKxl-NBlrOLyV3tVY5HaVrwnwdOx9_RF08y5AqQBYQ',
    type: 'iframe',
    url: 'https://googleads.g.doubleclick.net/xbbe/pixel?d=CKiUrQEQh_KA9gIYi7uq0QEwAQ&v=APEucNU22jhr1sIYir_wuGnbQKKMAVqkAmzvjuhKAWmzTs1y0pv18CrFeu2zo2sGnJOWr_9BUQpewGlOObHNvIkvKfvqIkO_2UuzKV-Be36eW0N6mbiCzJMYYv-0-S3lTG3N_T2N8Iw32f8NcZhM0Ao4knc7BgEksoHCvJ0QPRjNWgYtuiI3nZg0XifzNWtFieMtFa4e0y5VtUiCjMjSNGj_jn4Wehd7hK31lHs6ZXebTqKyr7oPXxgLo-x6f8yPXqpnI9CUZcnVqZbP8OfljrCelVk7Hj88EnjNTk739CUMUbL2BAoP9vFwIV2zEXmauix9GDXnogsc5HlwaRuYkX1Nzt4GMnguvXppHdpf0Wm4Cyia7Gti2PF59M8xJUyJ6udBg8Eb_IkEPni8VinYd6iBp4zQwJW_PzZfe6qdiqMrHkncmFdZ3ZmcVToFaUvL90N0Zb-Wc9sPMHbuOyKNIbbWIMAycsw2rsTwZqy0ridRXynO_PCWTxPawWe-yG2a_oQ4FgS9z-o3OQ7JatOXd4jghdN_AZ2Xh_bi5jDht7JMVZnLPUxl8Teiucih6BvQsYqew55ipkj1_tCoTLuRJDswmHubHtykNUmsGwE2WPGx9nFYDGoXJAuevVtUk_EtixNuKtFyas0p_q06OTz1lAZXsHqQ5SD_I0JKEb5UBxjDHtndG11OdhRWh79RJxtq1nUNr3mJqeJwQsu7bsX73clwCsfbzIbSOEPID8JnhgZ772OPGmp1ZzgodsPvuVw49a0Qg-UmEeiV3MYBbUdjnJcrNPK5iYWWBwFxHGM1TMb_QiCYzwQaIJSBarVFIAJKHK8QTRTH8DYOYTxjueAE0_zJjdfbnjHhroeoot7lXAasA4Q4tCmSfIJ-VQtj-wkp_VPdan27pDYmW1rAlJlhS4lIg9qkVo8zL44_tPnHzeZLCOQUoDvzGwGLtb5beGq1YggS8dfpuNladAar8NWBFCghBTNAn-shU4BrSqQphqGRLzbyv8eqYnalEYoHl8HrZJ-p_hR3zDydvL0IT530Fo2-6Zp5O3quup6wzTmGO5eW2UnPPt_AKJ-XO1UVdYU2b_Pz0gzQUkGUSocVO2w3ieUE8BDHaFKVoRxsDp1776KPusJPBpWFmlkBfjmMzD6YA2zhqtd1dmVf0Ymd4-fFPzH48E_09f5bvngG2Bh9Bug1o7iCdV3EgXawOsoVoLOKOKiZWW3peAz8037BbAHehqNXOCOy_yzl53o2rQzans17iSMhQn64j6IpuOl6CIPIAl1iCH1lsl4zKgOUt3MREsWmA1ap-la2BKo1_AqZwjYnS3wxYu-sHCmPWPQPkXbILoHOD4TokzJIZo2KOYa87ogT8bR50mRTG8yW0R3bNCk9EWo2Hd44HbhzkuY7rJL5zkDNu0UZnwJPKux_2XWAfku152cAy1ouRlwzSc4MRUWsVie-MdTAKIzDZR4cSfH034yuYtLgbNN_rvy-mCgzeEYiDJJTS1VFj3y0_fHa621T51N_dBuVBbEyTYit6EXZKEcmBOvWdZQSdIg7W99LkxVCsSm7vlHaYPxz_3oGQcdEEA_47hqpn2SzRoixnrTUkECcCMmfgI4eMxxZYPN_JWxh4gobe0sKtsTlKHxzri8TASEjwok9DbEXad0qWg6NKvMXQm1phXQM39k9WHrqb6M5UQT5sROsLvrSD0S6obfxw1kw2BXZU5PL3Jee1RpwVDGZqIM77L92BPKW3tHieSpbnLocwG3WiIl-I_AGiUa0z4I3SukquGcjw2LWH8sh52dM3OhuYZUfZEzTfTqlRhvSA6IB5lMUkOJC_CCotXrYSrBVwDDYbowXY5bo0MqaPO2Gwd17kDxJ96WH0ItWYBqpkqpDuZMIyuThvVOLNfTN3MW1_hlLYpPLcrxScCjxPnVTNRH2dIAxyjF6ijyHntpd54Ev0B21N5i2jg8oOmFfxs_SnoMv6uzw12A1tHCnusSzTHi3LABGwxwgjrk6-hIaBUoRgPpux8o_OeM3PZyI3h4K-m-RWsCQ3jI-9tl8wPS1K9Dk-XfcRgyhH_1Ch4lueIe-tEgYWN6CRYA8ZGHuB4zfdk0Wq3VL5TpITOT2QLbqq3ZSy-MduxlHTgGPD2AC_bmmWK6xDt1M3_Resqv9-9PnaeOddqq8m8UEhLZq8NkAjOH6MOkGrJ8-H_WFUz3BqXWm2CNap19EoQbIKuFfj3uMwATw2bOa6oUhdYMQsKCeghq2Wkcg2749AB-ebpGQpBvd6YP5hrZlE6OPwOuNShA0CmjpeV0pFUeqYpzwNmvJ3CnHqGTaEgEzdtuA2NjCyPwsc6KCQpy_8DONMUTLGD6sj9kYQ7yneX6Dls5ERW0L4szHys1yrJ4np8zloVmH2_FZAlu3YVRrzGnHaz34BusUOjgPJqX_dtkVDXwWK7apxUGER9M8eMYLWDbOOB9qMNWtDWpc1PUe7e2PtvC_CxUTFOOGqmm68LqEeMNuUlvcn95but9R1BiSSrBSf4Y0BLLou9_ABGmn_RyEE5ezowqSwYB9sVNbjj8b91BKz7TQmuSIXL2O-qxk0RJeabA3mMbNxZRG0mi03oOuTD3iMkds_NB6UE6FopROK_kZHW752pFubkP4oIS9MJLK4UpRXoNwNXc_f9ZpPxh1NZwMk-NFCRIasI0lmtSxQ_E_U19v7s9dR90HrobJSZUQ02jRmtt4i2h-rmY5STKNFezP2g_KKti-R3wk7eoSIn5TaR-uol-8PqAiZN0Ppb4Fw5yN_eSQ2WHPA6RQ0OxwqG7eupBdBGpJjOBdOyABOl-78MBACQ4pnpSJmV8XOweNNPyM7c428p363qlhflGcRd00sonw27hQCUNl7hI10loUmZLZMzStMJW07FdIML1ho6beiRRMQxxxq_eL5OyjoLLHbAKmRbu8vWgYVvqfbdgQQSC4aBPd-BHsM1C7OCzzuYCRjdXaPe-qSVHo1DV5OvRQX_4-zG1ATIICwMQEphLcVRQeiiBgnbHsddguE8AC6ZCrUSBBptQo3bSflpvM6OBYi07U58In7-XA1FhME6lck4yMyxWRAoMPP1RyByVm7cVO2P5Obu7HlRnav_wzjlBHaE5cfcB1JplGDbewZUVNR0b4r27SMF569PbKOjXsdn7S3CerXKl_mmkKxl-NBlrOLyV3tVY5HaVrwnwdOx9_RF08y5AqQBYQ',
    webSocketDebuggerUrl: 'ws://localhost:54438/devtools/page/795B7AAEE08B14C10ACF50B9265830C8'
  }
]
  → Completed command: setGeolocation () (200ms)

Can we reopen the issue please?