Stealth Chromium that passes every bot detection test. Drop-in Playwright replacement with source-level fingerprint patches. 30/30 tests passed.
821 matches across 13 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/test_geoip.py | 16 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 18 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 49 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 51 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 68 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 70 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 95 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 97 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 162 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_geoip.py | 164 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_persistent_context.py | 23 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_persistent_context.py | 25 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_persistent_context.py | 200 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_persistent_context.py | 202 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_humanize_unit.py | 39 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 41 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 49 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 51 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 66 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 68 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 117 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 119 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 188 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 190 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 269 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 271 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 311 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 313 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 398 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 400 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 429 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 431 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 445 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 447 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 464 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 466 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 482 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 484 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 603 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 605 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 761 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 763 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1165 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1167 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1256 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1258 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1374 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1376 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1477 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1479 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1668 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1670 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1831 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1833 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 371 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 373 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1943 | # ========================================================================= |
| MEDIUM | tests/test_humanize_unit.py | 1945 | # ========================================================================= |
| MEDIUM | tests/test_cloakserve.py | 85 | # --------------------------------------------------------------------------- |
| MEDIUM | tests/test_cloakserve.py | 87 | # --------------------------------------------------------------------------- |
| 156 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | js/src/download.ts | 540 | export function resetWrapperUpdateChecked(): void { |
| LOW | js/src/proxy.ts | 76 | function lenientDecodeURIComponent(s: string): string { |
| LOW | js/src/proxy.ts | 163 | export function supportsHttpProxyInlineAuth(): boolean { |
| LOW | tests/test_backend.py | 11 | def test_resolve_backend_default(): |
| LOW | tests/test_backend.py | 17 | def test_resolve_backend_explicit_playwright(): |
| LOW | tests/test_backend.py | 21 | def test_resolve_backend_explicit_patchright(): |
| LOW | tests/test_backend.py | 25 | def test_resolve_backend_env_var(): |
| LOW | tests/test_backend.py | 31 | def test_resolve_backend_param_beats_env(): |
| LOW | tests/test_backend.py | 37 | def test_resolve_backend_invalid_raises(): |
| LOW | tests/test_backend.py | 42 | def test_resolve_backend_invalid_env_raises(): |
| LOW | tests/test_geoip.py | 54 | def test_locale_map_has_common_countries(): |
| LOW | tests/test_geoip.py | 85 | def test_resolve_geo_returns_none_when_db_missing(): |
| LOW | tests/test_geoip.py | 100 | def test_maybe_resolve_skips_when_geoip_false(): |
| LOW | tests/test_geoip.py | 107 | def test_maybe_resolve_skips_when_no_proxy(): |
| LOW | tests/test_geoip.py | 114 | def test_maybe_resolve_skips_when_both_explicit(): |
| LOW | tests/test_geoip.py | 123 | def test_maybe_resolve_fills_missing_timezone(): |
| LOW | tests/test_geoip.py | 131 | def test_maybe_resolve_fills_missing_locale(): |
| LOW | tests/test_geoip.py | 139 | def test_maybe_resolve_fills_both(): |
| LOW | tests/test_geoip.py | 148 | def test_maybe_resolve_geoip_timeout_returns_existing_values(monkeypatch): |
| LOW | tests/test_launch.py | 34 | def test_launch_with_extra_args(): |
| LOW | tests/test_launch.py | 53 | def test_chrome_object_exists(): |
| LOW | tests/test_persistent_context.py | 13 | def _make_mock_pw_and_context(): |
| LOW | tests/test_persistent_context.py | 30 | def test_persistent_context_args_built(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 46 | def test_persistent_context_default_viewport(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 60 | def test_persistent_context_custom_viewport(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 75 | def test_persistent_context_user_agent(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 88 | def test_persistent_context_locale_and_timezone(_mock_bin): |
| LOW | tests/test_persistent_context.py | 107 | def test_persistent_context_color_scheme(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 121 | def test_persistent_context_geoip(_mock_bin, _mock_geoip): |
| LOW | tests/test_persistent_context.py | 139 | def test_persistent_context_timezone_id_alias(_mock_bin): |
| LOW | tests/test_persistent_context.py | 154 | def test_persistent_context_close_stops_pw(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 171 | def test_persistent_context_proxy_string(_mock_geoip, _mock_bin, _mock_platform): |
| LOW | tests/test_persistent_context.py | 187 | def test_persistent_context_proxy_dict(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 205 | def _make_mock_async_pw_and_context(): |
| LOW | tests/test_persistent_context.py | 218 | async def test_persistent_context_async_args_built(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 234 | async def test_persistent_context_async_close_stops_pw(_mock_geoip, _mock_bin): |
| LOW | tests/test_persistent_context.py | 250 | async def test_persistent_context_async_timezone_id_alias(_mock_bin): |
| LOW | tests/test_humanize_unit.py | 71 | def test_default_config_resolves(self): |
| LOW | tests/test_humanize_unit.py | 81 | def test_careful_config_resolves(self): |
| LOW | tests/test_humanize_unit.py | 122 | def test_generates_multiple_points(self): |
| LOW | tests/test_humanize_unit.py | 193 | def test_async_modules_import(self): |
| LOW | tests/test_humanize_unit.py | 274 | def test_press_skips_click_when_focused(self): |
| LOW | tests/test_humanize_unit.py | 316 | def test_check_calls_idle_when_enabled(self): |
| LOW | tests/test_humanize_unit.py | 403 | def test_handles_missing_original(self): |
| LOW | tests/test_humanize_unit.py | 434 | def test_resolve_config_has_all_fields(self): |
| LOW | tests/test_humanize_unit.py | 450 | def test_default_mistype_chance(self): |
| LOW | tests/test_humanize_unit.py | 457 | def test_careful_mistype_higher(self): |
| LOW | tests/test_humanize_unit.py | 469 | def test_select_all_constant_exists(self): |
| LOW | tests/test_humanize_unit.py | 473 | def test_select_all_matches_platform(self): |
| LOW | tests/test_humanize_unit.py | 487 | def test_cyrillic_uses_insert_text(self): |
| LOW | tests/test_humanize_unit.py | 609 | def test_fill_clears_existing(self): |
| LOW | tests/test_humanize_unit.py | 768 | def test_patch_single_element_handle_marks_patched(self): |
| LOW | tests/test_humanize_unit.py | 1171 | async def test_async_element_handle_click(self): |
| LOW | tests/test_humanize_unit.py | 1262 | def test_query_selector_click_humanized(self): |
| LOW | tests/test_humanize_unit.py | 1382 | def test_get_element_box_default_timeout(self): |
| LOW | tests/test_humanize_unit.py | 1486 | def test_merge_config_creates_new_instance(self): |
| LOW | tests/test_humanize_unit.py | 1497 | def test_merge_config_none_returns_base(self): |
| LOW | tests/test_humanize_unit.py | 1504 | def test_merge_config_ignores_unknown_keys(self): |
| LOW | tests/test_humanize_unit.py | 1513 | def test_page_type_uses_per_call_typing_delay(self): |
| LOW | tests/test_humanize_unit.py | 1677 | def test_human_scroll_into_view_skips_when_in_viewport(self): |
| 309 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/test_launch.py | 54 | """window.chrome should exist (Playwright leaks undefined).""" |
| HIGH | tests/test_stealth_reproduction_110.py | 37 | window.__detections.evaluateQS.push(sel); |
| HIGH | tests/test_stealth_reproduction_110.py | 46 | window.__detections.untrustedKeydown.push(e.key); |
| HIGH | tests/test_stealth_reproduction_110.py | 146 | window.__evalLeaks.push(sel); |
| HIGH | tests/test_stealth_unit.py | 1365 | if (e.stack && e.stack.includes(':302:')) { |
| HIGH | tests/test_stealth_unit.py | 1366 | window.__evalLeaks.push(sel); |
| HIGH | tests/test_stealth_unit.py | 1375 | window.__untrustedKeys.push(e.key); |
| HIGH | tests/test_stealth_unit.py | 1200 | if (e.stack && e.stack.includes(':302:')) { |
| HIGH | tests/test_stealth_unit.py | 1201 | window.__evaluateDetections.push(sel); |
| HIGH | tests/test_stealth_unit.py | 1244 | window.__untrustedKeys.push(e.key); |
| HIGH | tests/test_stealth_unit.py | 1246 | window.__trustedKeys.push(e.key); |
| HIGH | tests/test_stealth_unit.py | 1319 | if (e.stack && e.stack.includes(':302:')) { |
| HIGH | tests/test_stealth_unit.py | 1320 | window.__evalLeaks.push({sel, stack: e.stack.substring(0, 200)}); |
| HIGH | tests/test_stealth_unit.py | 1427 | if (e.stack && e.stack.includes(':302:')) { |
| HIGH | tests/test_stealth_unit.py | 1428 | window.__evalLeaks.push(sel); |
| HIGH | tests/test_stealth_unit.py | 1463 | if (!e.isTrusted) window.__untrusted.push(e.key); |
| HIGH | tests/test_stealth.py | 48 | """window.chrome must be an object (not undefined).""" |
| HIGH | tests/test_stealth.py | 105 | failed.push(cells[0].innerText.trim()); |
| HIGH | tests/test_stealth.py | 166 | const isBot = botMatch ? botMatch[1] === 'true' : null; |
| HIGH | tests/test_stealth.py | 214 | return {score: scoreMatch ? parseFloat(scoreMatch[1]) : null}; |
| HIGH | cloakbrowser/human/__init__.py | 1151 | || node.getAttribute && node.getAttribute('contenteditable') === 'true'; |
| HIGH | cloakbrowser/human/__init__.py | 2071 | || node.getAttribute && node.getAttribute('contenteditable') === 'true'; |
| HIGH | examples/fingerprint_scan_test.py | 46 | downlinkMax: navigator.connection?.downlinkMax ?? null, |
| HIGH | examples/fingerprint_scan_test.py | 105 | likeHeadlessPct: likeMatch ? parseInt(likeMatch[1]) : null, |
| HIGH | examples/fingerprint_scan_test.py | 106 | headlessPct: headlessMatch ? parseInt(headlessMatch[1]) : null, |
| HIGH | examples/fingerprint_scan_test.py | 107 | stealthPct: stealthMatch ? parseInt(stealthMatch[1]) : null, |
| HIGH | examples/fingerprint_scan_test.py | 120 | if (!fp || !fp.headless) return null; |
| HIGH | examples/fingerprint_scan_test.py | 122 | likeHeadless: fp.headless.likeHeadless || null, |
| HIGH | examples/fingerprint_scan_test.py | 122 | likeHeadless: fp.headless.likeHeadless || null, |
| HIGH | examples/fingerprint_scan_test.py | 123 | headless: fp.headless.headless || null, |
| HIGH | examples/fingerprint_scan_test.py | 123 | headless: fp.headless.headless || null, |
| HIGH | examples/fingerprint_scan_test.py | 124 | stealth: fp.headless.stealth || null, |
| HIGH | examples/fingerprint_scan_test.py | 124 | stealth: fp.headless.stealth || null, |
| HIGH | examples/fingerprint_scan_test.py | 126 | } catch { return null; } |
| HIGH | examples/fingerprint_scan_test.py | 159 | if (!fp || !fp.platformEstimate) return null; |
| HIGH | examples/fingerprint_scan_test.py | 161 | } catch { return null; } |
| HIGH | examples/stealth_test.py | 110 | const isBot = botMatch ? botMatch[1] === 'true' : null; |
| HIGH | examples/stealth_test.py | 161 | return match ? parseFloat(match[1]) : null; |
| HIGH | examples/stealth_test.py | 239 | let fullVersion = null; |
| HIGH | examples/stealth_test.py | 243 | fullVersion = chrome ? chrome.version : null; |
| HIGH | examples/stealth_test.py | 246 | const dbg = gl ? gl.getExtension('WEBGL_debug_renderer_info') : null; |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_humanize_unit.py | 1882 | except Exception: |
| LOW | tests/test_stealth_unit.py | 1021 | except Exception: |
| LOW | tests/test_stealth.py | 188 | except Exception: |
| LOW | tests/test_stealth.py | 279 | except Exception as e: |
| LOW | cloakbrowser/download.py | 156 | except Exception as primary_err: |
| LOW | cloakbrowser/download.py | 208 | except Exception: |
| LOW | cloakbrowser/download.py | 388 | except Exception: |
| LOW | cloakbrowser/download.py | 485 | except Exception: |
| LOW | cloakbrowser/download.py | 528 | except Exception: |
| LOW | cloakbrowser/download.py | 563 | except Exception: |
| LOW | cloakbrowser/browser.py | 575 | except Exception: |
| LOW | cloakbrowser/browser.py | 952 | except Exception: |
| LOW | cloakbrowser/geoip.py | 107 | except Exception as exc: |
| LOW | cloakbrowser/geoip.py | 143 | except Exception as exc: |
| LOW | cloakbrowser/geoip.py | 233 | except Exception: |
| LOW | cloakbrowser/geoip.py | 261 | except Exception as exc: |
| LOW | cloakbrowser/geoip.py | 295 | except Exception: |
| LOW | cloakbrowser/geoip.py | 312 | except Exception: |
| MEDIUM | cloakbrowser/geoip.py | 309 | def _bg() -> None: |
| LOW | cloakbrowser/__main__.py | 105 | except Exception as e: |
| MEDIUM | cloakbrowser/__main__.py | 106 | print(f"Error: {e}", file=sys.stderr) |
| LOW | cloakbrowser/human/scroll_async.py | 27 | except Exception: |
| LOW | cloakbrowser/human/scroll.py | 30 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 338 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1132 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1154 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1360 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1369 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 2074 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 110 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 115 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 178 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 183 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 231 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 246 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 266 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 280 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 298 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 309 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 327 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 444 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 682 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 860 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1039 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1056 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1237 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1409 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1430 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1452 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1558 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1614 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1649 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1702 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1788 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1966 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 1983 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 2157 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 2179 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 2286 | except Exception: |
| LOW | cloakbrowser/human/__init__.py | 2298 | except Exception: |
| 29 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/conftest.py | 3 | |
| LOW | tests/test_humanize_unit.py | 194 | |
| LOW | tests/test_humanize_unit.py | 195 | |
| LOW | tests/test_humanize_unit.py | 197 | |
| LOW | tests/test_humanize_unit.py | 197 | |
| LOW | tests/test_humanize_unit.py | 926 | |
| LOW | tests/test_stealth_unit.py | 17 | |
| LOW | tests/test_stealth_unit.py | 19 | |
| LOW | tests/test_stealth_unit.py | 22 | |
| LOW | tests/test_launch_context.py | 3 | |
| LOW | tests/test_update.py | 3 | |
| LOW | tests/test_update.py | 7 | |
| LOW | tests/test_update.py | 12 | |
| LOW | tests/test_extract.py | 4 | |
| LOW | tests/test_extract.py | 6 | |
| LOW | tests/test_lambda_security.py | 3 | |
| LOW | tests/test_lambda_security.py | 7 | |
| LOW | cloakbrowser/config.py | 3 | |
| LOW | cloakbrowser/config.py | 10 | |
| LOW | cloakbrowser/download.py | 7 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 14 | |
| LOW | cloakbrowser/__init__.py | 15 | |
| LOW | cloakbrowser/__init__.py | 15 | |
| LOW | cloakbrowser/__init__.py | 16 | |
| LOW | cloakbrowser/__init__.py | 16 | |
| LOW | cloakbrowser/__init__.py | 16 | |
| LOW | cloakbrowser/__init__.py | 16 | |
| LOW | cloakbrowser/__init__.py | 17 | |
| LOW | cloakbrowser/browser.py | 15 | |
| LOW | cloakbrowser/geoip.py | 11 | |
| LOW | cloakbrowser/__main__.py | 10 | |
| LOW | cloakbrowser/human/scroll_async.py | 7 | |
| LOW | cloakbrowser/human/config.py | 7 | |
| LOW | cloakbrowser/human/config.py | 9 | |
| LOW | cloakbrowser/human/config.py | 12 | |
| LOW | cloakbrowser/human/keyboard_async.py | 10 | |
| LOW | cloakbrowser/human/keyboard_async.py | 13 | |
| LOW | cloakbrowser/human/keyboard_async.py | 15 | |
| LOW | cloakbrowser/human/keyboard_async.py | 16 | |
| LOW | cloakbrowser/human/scroll.py | 3 | |
| LOW | cloakbrowser/human/mouse_async.py | 7 | |
| LOW | cloakbrowser/human/mouse_async.py | 11 | |
| LOW | cloakbrowser/human/mouse_async.py | 14 | |
| LOW | cloakbrowser/human/__init__.py | 14 | |
| LOW | cloakbrowser/human/__init__.py | 22 | |
| LOW | cloakbrowser/human/__init__.py | 22 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| LOW | cloakbrowser/human/__init__.py | 30 | |
| 11 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_update.py | 450 | |
| LOW | tests/test_lambda_security.py | 131 | |
| LOW | cloakbrowser/config.py | 159 | |
| LOW | cloakbrowser/download.py | 246 | |
| LOW | cloakbrowser/download.py | 313 | |
| LOW | cloakbrowser/download.py | 466 | |
| LOW | cloakbrowser/geoip.py | 266 | |
| LOW | cloakbrowser/human/__init__.py | 1533 | |
| LOW | cloakbrowser/human/__init__.py | 2462 | |
| LOW | cloakbrowser/human/__init__.py | 92 | |
| LOW | cloakbrowser/human/__init__.py | 160 | |
| LOW | cloakbrowser/human/actionability.py | 86 | |
| LOW | cloakbrowser/human/actionability.py | 270 | |
| LOW | cloakbrowser/human/actionability_async.py | 39 | |
| LOW | cloakbrowser/human/actionability_async.py | 171 | |
| LOW | examples/fingerprint_scan_test.py | 89 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | examples/integrations/browser_use_example.py | 18 | # Step 1: Launch CloakBrowser (handles binary, stealth args, fingerprints) |
| LOW | examples/integrations/browser_use_example.py | 24 | # Step 2: Connect browser-use to the stealth browser via CDP |
| LOW | examples/integrations/browser_use_example.py | 27 | # Step 3: Run your AI agent — it browses through CloakBrowser |
| LOW | examples/integrations/crawl4ai_example.py | 17 | # Step 1: Launch CloakBrowser with remote debugging |
| LOW | examples/integrations/crawl4ai_example.py | 23 | # Step 2: Connect Crawl4AI to the stealth browser via CDP |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/test_update.py | 407 | # Create the binary dir so it looks already downloaded |
| MEDIUM | tests/test_update.py | 438 | # Create a fake cached binary |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | cloakbrowser/human/config.py | 179 | Resolve a preset name + optional overrides into a full HumanConfig. Args: preset: 'default' or 'careful'. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | README.md | 528 | page.locator("#email").fill("user@example.com") # per-character timing, thinking pauses |
| LOW | README.md | 1220 | page.type("#email", "user@example.com", delay=50) |
| LOW | js/README.md | 277 | await page.type('#email', 'user@example.com', { delay: 50 }); |
| LOW | js/src/puppeteer.ts | 113 | * await page.type('#email', 'user@example.com'); // Per-character timing |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | bin/docker-entrypoint.sh | 1 | #!/bin/bash |
| LOW | js/src/human/elementhandle.ts | 141 | |
| LOW | examples/integrations/agent_browser.sh | 1 | #!/bin/bash |
| LOW | examples/integrations/aws_lambda/lambda-entrypoint.sh | 1 | #!/bin/sh |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | examples/fingerprint_scan_test.py | 90 | """abrahamjuliot.github.io/creepjs — comprehensive fingerprint analysis.""" |
| MEDIUM | examples/stealth_test.py | 54 | """bot.incolumitas.com — comprehensive 30+ check bot detection.""" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_stealth_unit.py | 1214 | # Check if any querySelector calls came from evaluate context |