cdpfleet Docs GitHub Dashboard

Compare / browsers

Naver Whale vs Chrome

Whale 5.39 runs on Chromium 150, five majors behind Chrome 155, names itself in the user agent and client hints, and sends a TLS hello one extension short of Chrome's. What that means for driving it and for how sites see it.

Naver Whale Google Chrome

Naver Whale is Naver's Chromium browser, the one that ships with Naver services in Korea. On the fleet, Whale 5.39.412.57 stable is built on Chromium 150.0.7871.252, while Chrome stable is 155.0.8059.84 — measured the same night. Both run headful by default and cost the same two threads. The questions for a scraper: does Whale look like Chrome on the wire, does it hide that it's Whale, and what does running five Chromium majors behind cost you?

As a developer: driving them

Naver WhaleGoogle Chrome
Version on the fleetWhale 5.39 stable on Chromium 150. Stable channel only, no pinned versions.Chrome 155 stable on Chromium 155, with beta (156) and dev (157) channels and pinned previous majors (version).
Launch optionschannel, live_view, screen_size, keep_alive, start_url, record. No cdp (400) and no persistent profile (400 profile_unsupported_engine).The same plus cdp, profile and version.
Playwright featuresMain-world evaluate, console events, init scripts, routing, screenshots, PDF, device emulation, tracing — all work (measured).The same list, all working (measured).
Web platformChromium 150: no Iterator.prototype.includes/join/Iterator.zip, no FontFace width, no <camera> element, no CSS margin-trim, text-decoration-skip-spaces or symbols(), no media-playback-while-not-visible policy (measured).Chromium 155: all of the above present (measured).
Privacy SandboxNo Topics API; Shared Storage and document.requestStorageAccessFor are exposed (measured).Topics API exposed; Shared Storage and requestStorageAccessFor are not (measured).
WebGLWebGL 2.0 on SwiftShader (ANGLE, Vulkan), like Chrome (measured; before 2026-10-17 headful Whale had no WebGL context on the fleet).WebGL 2.0 on SwiftShader (ANGLE, Vulkan), the software renderer of a GPU-less server.

As a scraper: what the site sees

Naver WhaleGoogle Chrome
User agentChrome/150.0.0.0 Whale/5.39.412.57 Safari/537.36 — Whale names itself, with its full version.Chrome/155.0.0.0 … Safari/537.36.
Client hintsBrands Whale 5, Chromium 150; full versions 5.39.412.57 and 150.0.7871.252.Brands Google Chrome 155, Chromium 155; full version 155.0.8059.84.
TLSJA4 t13d1516h2_8daaf6152771_806a8c22fdea: 16 ciphers, 18 extensions; its own peetprint.JA4 t13d1517h2_8daaf6152771_cb7bf5808d99: the same 16 ciphers, 19 extensions. The cipher part of JA4 matches; the extension part doesn't.
HTTP/2 and headersChromium's SETTINGS and WINDOW_UPDATE (1:65536;2:0;4:6291456;6:262144|15663105); header order sec-ch-ua … user-agent, accept, sec-fetch-*.Identical HTTP/2 fingerprint and header order.
Fingerprint valuesThe machine's own cores, memory and screen; canvas hash 4f88e08a, 5 plugins, en-US, en; the same WebGL renderer as Chrome.Canvas hash f5a94624 — a different canvas hash from Whale's on the same renderer; the same plugins and languages. Neither adds fingerprint randomisation.
Bot checksbot.sannysoft.com: 1 flag, "WebGL Renderer" (SwiftShader on a GPU-less server).The same 1 flag.

Which to pick

Measured on the fleet (2026-10-17)

One headful launch of each through the same proxy, probed from inside a page and via tls.peet.ws.

Launch and cost

Single run; timings depend on the proxy and on fleet load.

Naver WhaleGoogle Chrome
Launch body{"headless":false}{"headless":false}
Threads used2 (linux_headful)2 (linux_headful)
Browser version150.0.7871.252155.0.8059.84
Launch request → browser ready0.4 s0.4 s
Playwright connect0.1 s0.1 s
Load example.com1.4 s2.6 s
Load tls.peet.ws/api/all1.3 s2.1 s

What the network sees

From tls.peet.ws/api/all, requested by the browser itself. JA3 hashes change between runs of the same build (GREASE), so compare JA4 and the HTTP/2 fingerprint.

Naver WhaleGoogle Chrome
HTTP versionh2h2
JA4t13d1516h2_8daaf6152771_806a8c22fdeat13d1517h2_8daaf6152771_cb7bf5808d99
Peetprint hash67c3e9111bed9e7f03d2f21d6d88994bfc97c1cdfb1409c9a9326c1b726d1dee
Akamai HTTP/2 fingerprint1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p
Cipher suites / extensions16 / 1816 / 19
Header order (first 12)method, authority, scheme, path, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, upgrade-insecure-requests, user-agent, accept, sec-fetch-site, sec-fetch-modemethod, authority, scheme, path, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, upgrade-insecure-requests, user-agent, accept, sec-fetch-site, sec-fetch-mode

What page scripts see

Read with page.evaluate on example.com. Cores and memory are the server's and vary between fleet nodes.

Naver WhaleGoogle Chrome
navigator.userAgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Whale/5.39.412.57 Safari/537.36Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36
UA-CH brandsWhale 5 · Chromium 150 · Not/A)Brand 24Google Chrome 155 · Chromium 155 · Not(A:Brand 24
UA-CH full version listWhale 5.39.412.57 · Chromium 150.0.7871.252 · Not/A)Brand 24.0.0.0Google Chrome 155.0.8059.84 · Chromium 155.0.8059.84 · Not(A:Brand 24.0.0.0
navigator.platform / vendorLinux x86_64 / Google Inc.Linux x86_64 / Google Inc.
Languagesen-US, enen-US, en
Timezone / localeUTC / en-USUTC / en-US
Screen (w×h×availW×availH×depth)1280x720x1280x720x241280x720x1280x720x24
Window outer / inner / DPR1288x805 / 1280x720 / 11288x805 / 1280x720 / 1
hardwareConcurrency / deviceMemory16 / 3232 / 32
WebGL vendorGoogle Inc. (Google)Google Inc. (Google)
WebGL rendererANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)
WebGL versionWebGL 2.0 (OpenGL ES 3.0 Chromium)WebGL 2.0 (OpenGL ES 3.0 Chromium)
WebGPU (navigator.gpu)yesyes
Canvas hash4f88e08af5a94624
navigator.webdrivernono
window.chrome / navigator.connectionyes / yesyes / yes
Plugins / PDF viewer5 / yes5 / yes
Notification.permission / permissions.querydefault / promptdefault / prompt

Web platform features

Presence probes; a user agent that claims one version while exposing another's features is a detectable inconsistency.

Naver WhaleGoogle Chrome
Iterator.prototype.includes (new in Chrome 154)noyes
FontFace.width (new in Chrome 154)noyes
CSS text-decoration-inset (new in Chrome 154)nono
Iterator.prototype.join (Chrome 153)noyes
Iterator.zip (Chrome 153)noyes
CSS scroll-axis-lock (Chrome 153)nono
<camera> element (Chrome 153)noyes
document.requestStorageAccessFor (deprecated in 153)yesno
Topics API (document.browsingTopics)noyes
Protected Audience (navigator.joinAdInterestGroup)yesyes
Shared Storage (window.sharedStorage)yesno
Attribution Reporting (window.attributionReporting)nono
Private Aggregationnono
WebHID (navigator.hid)yesyes
CSS margin-trim (Chrome 155)noyes
CSS text-decoration-skip-spaces (Chrome 155)noyes
CSS corner shorthand (Chrome 155)nono
CSS symbols() (Chrome 155)noyes
Element.streamAppendHTML (Chrome 155)nono
WebTransport.reliability (Chrome 155)nono
window.maximize() — Additional Windowing Controls (Chrome 155)nono
Canvas srgb-linear colour space (Chrome 155)nono
Permission policy media-playback-while-not-visible (Chrome 155)noyes
CSS random() (Chrome 156)nono
CSS scroll-snap-type: pair (Chrome 156)nono
Fenced frames (window.fence) — removal starts in 157yesyes
rel=compression-dictionary (Chrome 156 updates)yesyes

bot.sannysoft.com

The classic headless-detection test page; what it marks red.

Naver WhaleGoogle Chrome
Checks / failed57 / 157 / 1
Failed checksWebGL RendererWebGL Renderer

A plain-HTTP URL (http://ip-api.com/json)

Chrome 154 warns before loading insecure HTTP by default — does that reach an automated session?

Naver WhaleGoogle Chrome
Final URLhttp://ip-api.com/json/?fields=statushttp://ip-api.com/json/?fields=status
HTTP status200200
Content loaded / warning page firstyes / noyes / no

Playwright over the remote connection

Which client features work on this side.

Naver WhaleGoogle Chrome
page.evaluate runs in the page's own worldyesyes
addInitScript visible to page scriptsyesyes
Console eventsyesyes
Request interception (page.route)yesyes
Screenshotyesyes
PDFyesyes
Mobile device emulationyesyes
Tracingyesyes

Rows where the two sides differ are highlighted. IP addresses are replaced with placeholders (203.0.113.x). The probe is compare/probe.mjs in our repository; the raw result is below.

Raw output
{
  "ran_at": "2026-10-17T10:49:59.430Z",
  "sides": [
    {
      "label": "Naver Whale",
      "engine": "whale",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "whale",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 421,
        "connect_ms": 108,
        "example_ms": 1353,
        "peet_ms": 1294
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "3acae35a89afdb93498313660eb078c5",
        "peetprint_hash": "67c3e9111bed9e7f03d2f21d6d88994b",
        "ciphers": 16,
        "extensions": 18,
        "akamai_h2": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p",
        "akamai_h2_hash": "52d84b11737d980aef856699f885ca86",
        "header_order": [
          "method",
          "authority",
          "scheme",
          "path",
          "sec-ch-ua",
          "sec-ch-ua-mobile",
          "sec-ch-ua-platform",
          "upgrade-insecure-requests",
          "user-agent",
          "accept",
          "sec-fetch-site",
          "sec-fetch-mode"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Whale/5.39.412.57 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 16,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Whale",
              "version": "5"
            },
            {
              "brand": "Chromium",
              "version": "150"
            },
            {
              "brand": "Not/A)Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Whale",
              "version": "5.39.412.57"
            },
            {
              "brand": "Chromium",
              "version": "150.0.7871.252"
            },
            {
              "brand": "Not/A)Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "5.39.412.57",
          "wow64": false
        },
        "screen": "1280x720x1280x720x24",
        "window": {
          "outer": "1288x805",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "UTC",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Google)",
          "renderer": "ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
          "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)"
        },
        "canvas_hash": "4f88e08a",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": true,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": false,
          "iterator_join": false,
          "iterator_zip": false,
          "fontface_width": false,
          "css_text_decoration_inset": false,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": false,
          "topics_api": false,
          "protected_audience": true,
          "shared_storage": true,
          "attribution_reporting": false,
          "request_storage_access_for": true,
          "webhid": true,
          "private_aggregation": false,
          "css_margin_trim": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": false,
          "stream_append_html": false,
          "webtransport_reliability": false,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": true,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 30
      },
      "plain_http": {
        "final_url": "http://ip-api.com/json/?fields=status",
        "status": 200,
        "title": "",
        "loaded": true,
        "warning_page": false,
        "page_text": "{\"status\":\"success\"}"
      },
      "playwright": {
        "evaluate_in_main_world": true,
        "console_events": true,
        "init_script": true,
        "route": true,
        "screenshot": true,
        "pdf": true,
        "mobile_emulation": true,
        "tracing": true
      },
      "browser_version": "150.0.7871.252"
    },
    {
      "label": "Google Chrome",
      "engine": "chrome",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "chrome",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 409,
        "connect_ms": 90,
        "example_ms": 2588,
        "peet_ms": 2094
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "0402a942f2641c0452b616ab4bacc02d",
        "peetprint_hash": "fc97c1cdfb1409c9a9326c1b726d1dee",
        "ciphers": 16,
        "extensions": 19,
        "akamai_h2": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p",
        "akamai_h2_hash": "52d84b11737d980aef856699f885ca86",
        "header_order": [
          "method",
          "authority",
          "scheme",
          "path",
          "sec-ch-ua",
          "sec-ch-ua-mobile",
          "sec-ch-ua-platform",
          "upgrade-insecure-requests",
          "user-agent",
          "accept",
          "sec-fetch-site",
          "sec-fetch-mode"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 32,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Google Chrome",
              "version": "155"
            },
            {
              "brand": "Chromium",
              "version": "155"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Google Chrome",
              "version": "155.0.8059.84"
            },
            {
              "brand": "Chromium",
              "version": "155.0.8059.84"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "155.0.8059.84",
          "wow64": false
        },
        "screen": "1280x720x1280x720x24",
        "window": {
          "outer": "1288x805",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "UTC",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Google)",
          "renderer": "ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
          "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)"
        },
        "canvas_hash": "f5a94624",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": true,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": true,
          "iterator_join": true,
          "iterator_zip": true,
          "fontface_width": true,
          "css_text_decoration_inset": false,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": true,
          "topics_api": true,
          "protected_audience": true,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": true,
          "private_aggregation": false,
          "css_margin_trim": true,
          "css_text_decoration_skip_spaces": true,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": false,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": true,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": true,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 30
      },
      "plain_http": {
        "final_url": "http://ip-api.com/json/?fields=status",
        "status": 200,
        "title": "",
        "loaded": true,
        "warning_page": false,
        "page_text": "{\"status\":\"success\"}"
      },
      "playwright": {
        "evaluate_in_main_world": true,
        "console_events": true,
        "init_script": true,
        "route": true,
        "screenshot": true,
        "pdf": true,
        "mobile_emulation": true,
        "tracing": true
      },
      "browser_version": "155.0.8059.84"
    }
  ]
}

Bottom line

Whale is a Chromium browser that tells every site it's Whale: its own brand in the user agent and client hints, a TLS hello one extension short of Chrome's, the same HTTP/2 and headers, and an engine five Chromium majors behind.

Both cost the same two threads headful; choose by which browser the site should believe it's talking to — and use Chrome when you need CDP or profiles.