cdpfleet Docs GitHub Dashboard

Compare / versions

Camoufox 152 vs Camoufox 150

Both claim Firefox 152 and send the same TLS fingerprint — but on 152 Playwright's evaluate and init scripts run in an isolated world the page can't see, while on 150 they run in the page's own world.

Camoufox

The fleet runs Camoufox 152 by default (152.0.4-beta.30 today) and keeps 150 (150.0.2-beta.25) as a pinned version — {"version": "150"} — for reproducible personas. Both were launched headless with a Windows persona and main_world_eval through the same rotating proxy for this page. Camoufox generates a new persona on every launch — screen, GPU, canvas — and matches locale and timezone to the exit IP, so those differ between any two launches and aren't listed as version changes below. For Camoufox against Mozilla's own build, see Firefox vs Camoufox.

What changed for your scripts

What a site sees

Camoufox 152Camoufox 150
User agentFirefox/152.0 (rv:152.0), Windows.Also Firefox/152.0 — the pinned 150 build presents itself as 152 by default.
TLS and HTTP/2JA4 t13d1617h2_86a278354501_3cbfd9057e0d.Identical JA4 and HTTP/2 fingerprint.
Web platform featuresThe 28 features in our probe are the same on both — none gives the older engine away.The same.
PersonaGenerated per launch: here a 2560×1440 screen and an Intel HD Graphics renderer.Here a 1920×1080 screen and Intel HD Graphics 400 — a different persona, not a different version.
Bot checksbot.sannysoft.com flagged only the "Chrome (New)" test, which expects Chrome.The same.

Which one to use

Measured on the fleet (2026-10-15)

One headless launch of each with a Windows persona and main_world_eval, through the same rotating proxy, probed from inside a page (isolated and main world) and via tls.peet.ws. Locale, timezone and exit IP follow the proxy exit of each launch.

Launch and cost

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

Camoufox 152Camoufox 150
Launch body{"headless":true,"os":"windows","main_world_eval":true}{"headless":true,"os":"windows","main_world_eval":true,"version":"150"}
Threads used1 (linux_headless)1 (linux_headless)
Browser version152.0.4-beta.30150.0.2-beta.25
Launch request → browser ready1.4 s2.9 s
Playwright connect0.0 s0.1 s
Load example.com7.2 s1.9 s
Load tls.peet.ws/api/all1.0 s1.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.

Camoufox 152Camoufox 150
HTTP versionh2h2
JA4t13d1617h2_86a278354501_3cbfd9057e0dt13d1617h2_86a278354501_3cbfd9057e0d
Peetprint hashfd4547eeb41f073156b7bc8125a79a3cfd4547eeb41f073156b7bc8125a79a3c
Akamai HTTP/2 fingerprint1:65536;2:0;4:131072;5:16384|12517377|0|m,p,a,s1:65536;2:0;4:131072;5:16384|12517377|0|m,p,a,s
Cipher suites / extensions16 / 1716 / 17
Header order (first 12)method, path, authority, scheme, user-agent, accept, accept-language, accept-encoding, upgrade-insecure-requests, sec-fetch-dest, sec-fetch-mode, sec-fetch-sitemethod, path, authority, scheme, user-agent, accept, accept-language, accept-encoding, upgrade-insecure-requests, sec-fetch-dest, sec-fetch-mode, sec-fetch-site

What page scripts see

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

Camoufox 152Camoufox 150
navigator.userAgentMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0
navigator.platform / vendorWin32 / ""Win32 / ""
Languagespt-BR, pten-US, en
Timezone / localeAmerica/Sao_Paulo / ptAmerica/New_York / en-US
Screen (w×h×availW×availH×depth)2560x1440x2560x1440x241920x1080x1920x1032x24
Window outer / inner / DPR2121x1191 / 1280x720 / 11936x1048 / 1280x720 / 1
hardwareConcurrency / deviceMemory16 / —16 / —
WebGL vendorGoogle Inc. (Intel)Google Inc. (Intel)
WebGL rendererANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similarANGLE (Intel, Intel(R) HD Graphics 400 Direct3D11 vs_5_0 ps_5_0), or similar
WebGL versionWebGL 2.0WebGL 2.0
WebGPU (navigator.gpu)nono
Canvas hash2decd802f8270103
navigator.webdrivernono
window.chrome / navigator.connectionno / nono / no
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.

Camoufox 152Camoufox 150
Iterator.prototype.includes (new in Chrome 154)nono
FontFace.width (new in Chrome 154)nono
CSS text-decoration-inset (new in Chrome 154)yesyes
Iterator.prototype.join (Chrome 153)nono
Iterator.zip (Chrome 153)yesyes
CSS scroll-axis-lock (Chrome 153)nono
<camera> element (Chrome 153)nono
document.requestStorageAccessFor (deprecated in 153)nono
Topics API (document.browsingTopics)nono
Protected Audience (navigator.joinAdInterestGroup)nono
Shared Storage (window.sharedStorage)nono
Attribution Reporting (window.attributionReporting)nono
Private Aggregationnono
WebHID (navigator.hid)nono
CSS margin-trim (Chrome 155)nono
CSS text-decoration-skip-spaces (Chrome 155)nono
CSS corner shorthand (Chrome 155)nono
CSS symbols() (Chrome 155)yesyes
Element.streamAppendHTML (Chrome 155)nono
WebTransport.reliability (Chrome 155)yesyes
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)nono
CSS random() (Chrome 156)nono
CSS scroll-snap-type: pair (Chrome 156)nono
Fenced frames (window.fence) — removal starts in 157nono
rel=compression-dictionary (Chrome 156 updates)nono

bot.sannysoft.com

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

Camoufox 152Camoufox 150
Checks / failed57 / 157 / 1
Failed checksChrome (New)Chrome (New)

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

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

Camoufox 152Camoufox 150
Final URLhttp://ip-api.com/json/?fields=statusError: page.goto: Navigation to "http://ip-api.com/json/?fields=status" is interrupted by another navigation to "http://ip-api.com/json/?fields=status"
HTTP status200—
Content loaded / warning page firstyes / no— / —

Playwright over the remote connection

Which client features work on this side.

Camoufox 152Camoufox 150
page.evaluate runs in the page's own worldnoyes
main_world_eval option (mw: prefix)yesyes
addInitScript visible to page scriptsnoyes
Console eventsyesyes
Request interception (page.route)yesyes
Screenshotyesyes
PDFno — Error: page.pdf: PDF generation is only supported for Headless Chromiumno — Error: page.pdf: PDF generation is only supported for Headless Chromium
Mobile device emulationno — Error: browser.newContext: options.isMobile is not supported in Firefoxno — Error: browser.newContext: options.isMobile is not supported in Firefox
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-15T01:19:44.832Z",
  "sides": [
    {
      "label": "Camoufox 152",
      "engine": "camoufox",
      "body": {
        "headless": true,
        "os": "windows",
        "main_world_eval": true
      },
      "launch": {
        "browser": "camoufox",
        "resource_class": "linux_headless",
        "weight": 1,
        "launch_ms": 1439,
        "connect_ms": 38,
        "example_ms": 7239,
        "peet_ms": 980
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1617h2_86a278354501_3cbfd9057e0d",
        "ja3_hash": "6447ab086255d194909d4013b1a89e87",
        "peetprint_hash": "fd4547eeb41f073156b7bc8125a79a3c",
        "ciphers": 16,
        "extensions": 17,
        "akamai_h2": "1:65536;2:0;4:131072;5:16384|12517377|0|m,p,a,s",
        "akamai_h2_hash": "6ea73faa8fc5aac76bded7bd238f6433",
        "header_order": [
          "method",
          "path",
          "authority",
          "scheme",
          "user-agent",
          "accept",
          "accept-language",
          "accept-encoding",
          "upgrade-insecure-requests",
          "sec-fetch-dest",
          "sec-fetch-mode",
          "sec-fetch-site"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0",
        "platform": "Win32",
        "vendor": "",
        "languages": [
          "pt-BR",
          "pt"
        ],
        "hardware_concurrency": 16,
        "device_memory": null,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": null,
        "screen": "2560x1440x2560x1440x24",
        "window": {
          "outer": "2121x1191",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "America/Sao_Paulo",
        "locale": "pt",
        "webgl": {
          "vendor": "Google Inc. (Intel)",
          "renderer": "ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar",
          "version": "WebGL 2.0"
        },
        "canvas_hash": "2decd802",
        "webgpu": false,
        "chrome_object": false,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": false,
          "iterator_join": false,
          "iterator_zip": true,
          "fontface_width": false,
          "css_text_decoration_inset": true,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": false,
          "topics_api": false,
          "protected_audience": false,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": false,
          "private_aggregation": false,
          "css_margin_trim": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": true,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": false,
          "compression_dictionary": false
        }
      },
      "page_main_world": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0",
        "platform": "Win32",
        "vendor": "",
        "languages": [
          "pt-BR",
          "pt"
        ],
        "hardware_concurrency": 16,
        "device_memory": null,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": null,
        "screen": "2560x1440x2560x1440x24",
        "window": {
          "outer": "2121x1191",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "America/Sao_Paulo",
        "locale": "pt",
        "webgl": {
          "vendor": "Google Inc. (Intel)",
          "renderer": "ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar",
          "version": "WebGL 2.0"
        },
        "canvas_hash": "2decd802",
        "webgpu": false,
        "chrome_object": false,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": false,
          "iterator_join": false,
          "iterator_zip": true,
          "fontface_width": false,
          "css_text_decoration_inset": true,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": false,
          "topics_api": false,
          "protected_audience": false,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": false,
          "private_aggregation": false,
          "css_margin_trim": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": true,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": false,
          "compression_dictionary": false
        }
      },
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "Chrome (New)"
        ],
        "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": false,
        "console_events": true,
        "init_script": false,
        "route": true,
        "screenshot": true,
        "pdf": false,
        "pdf_error": "Error: page.pdf: PDF generation is only supported for Headless Chromium",
        "mobile_emulation": false,
        "mobile_emulation_error": "Error: browser.newContext: options.isMobile is not supported in Firefox",
        "tracing": true,
        "main_world_eval_option": true
      },
      "browser_version": "152.0.4-beta.30"
    },
    {
      "label": "Camoufox 150",
      "engine": "camoufox",
      "body": {
        "headless": true,
        "os": "windows",
        "main_world_eval": true,
        "version": "150"
      },
      "launch": {
        "browser": "camoufox",
        "resource_class": "linux_headless",
        "weight": 1,
        "launch_ms": 2941,
        "connect_ms": 103,
        "example_ms": 1932,
        "peet_ms": 1134
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1617h2_86a278354501_3cbfd9057e0d",
        "ja3_hash": "6447ab086255d194909d4013b1a89e87",
        "peetprint_hash": "fd4547eeb41f073156b7bc8125a79a3c",
        "ciphers": 16,
        "extensions": 17,
        "akamai_h2": "1:65536;2:0;4:131072;5:16384|12517377|0|m,p,a,s",
        "akamai_h2_hash": "6ea73faa8fc5aac76bded7bd238f6433",
        "header_order": [
          "method",
          "path",
          "authority",
          "scheme",
          "user-agent",
          "accept",
          "accept-language",
          "accept-encoding",
          "upgrade-insecure-requests",
          "sec-fetch-dest",
          "sec-fetch-mode",
          "sec-fetch-site"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0",
        "platform": "Win32",
        "vendor": "",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 16,
        "device_memory": null,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": null,
        "screen": "1920x1080x1920x1032x24",
        "window": {
          "outer": "1936x1048",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "America/New_York",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Intel)",
          "renderer": "ANGLE (Intel, Intel(R) HD Graphics 400 Direct3D11 vs_5_0 ps_5_0), or similar",
          "version": "WebGL 2.0"
        },
        "canvas_hash": "f8270103",
        "webgpu": false,
        "chrome_object": false,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": false,
          "iterator_join": false,
          "iterator_zip": true,
          "fontface_width": false,
          "css_text_decoration_inset": true,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": false,
          "topics_api": false,
          "protected_audience": false,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": false,
          "private_aggregation": false,
          "css_margin_trim": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": true,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": false,
          "compression_dictionary": false
        }
      },
      "page_main_world": {
        "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:152.0) Gecko/20100101 Firefox/152.0",
        "platform": "Win32",
        "vendor": "",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 16,
        "device_memory": null,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": null,
        "screen": "1920x1080x1920x1032x24",
        "window": {
          "outer": "1936x1048",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "America/New_York",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Intel)",
          "renderer": "ANGLE (Intel, Intel(R) HD Graphics 400 Direct3D11 vs_5_0 ps_5_0), or similar",
          "version": "WebGL 2.0"
        },
        "canvas_hash": "f8270103",
        "webgpu": false,
        "chrome_object": false,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": false,
          "iterator_join": false,
          "iterator_zip": true,
          "fontface_width": false,
          "css_text_decoration_inset": true,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": false,
          "topics_api": false,
          "protected_audience": false,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": false,
          "private_aggregation": false,
          "css_margin_trim": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": true,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "css_random": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": false,
          "compression_dictionary": false
        }
      },
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "Chrome (New)"
        ],
        "passed": 30
      },
      "plain_http": {
        "error": "Error: page.goto: Navigation to \"http://ip-api.com/json/?fields=status\" is interrupted by another navigation to \"http://ip-api.com/json/?fields=status\""
      },
      "playwright": {
        "evaluate_in_main_world": true,
        "console_events": true,
        "init_script": true,
        "route": true,
        "screenshot": true,
        "pdf": false,
        "pdf_error": "Error: page.pdf: PDF generation is only supported for Headless Chromium",
        "mobile_emulation": false,
        "mobile_emulation_error": "Error: browser.newContext: options.isMobile is not supported in Firefox",
        "tracing": true,
        "main_world_eval_option": true
      },
      "browser_version": "150.0.2-beta.25"
    }
  ]
}

Bottom line

For scraping, Camoufox 152 and 150 look the same on the wire and claim the same Firefox version; the change that matters is inside Playwright — on 152 your code runs out of the page's sight.