Repository Analysis

CloakHQ/CloakBrowser

Stealth Chromium that passes every bot detection test. Drop-in Playwright replacement with source-level fingerprint patches. 30/30 tests passed.

33.5 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of CloakHQ/CloakBrowser, a Python project with 30,925 GitHub stars. SynthScan v2.0 examined 72,455 lines of code across 200 source files, recording 1403 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 33.5 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

33.5
Adjusted Score
33.5
Raw Score
100%
Time Factor
2026-08-28
Last Push
30.9K
Stars
Python
Language
72.5K
Lines of Code
200
Files
1.4K
Pattern Hits
2026-08-29
Scan Date
0.68
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 136MEDIUM 281LOW 986

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1403 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators271 hits · 872 pts
SeverityFileLineSnippetContext
MEDIUMjs/tests/license.test.ts46// ── resolveLicenseKey ─────────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts87// ── validateLicense ───────────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts283// ── getProLatestVersion ───────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts487// ── Config pro parameter ──────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts503// ── buildLaunchEnv ─────────────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts609// ── post-handshake denial: helpers + guard ─────────────COMMENT
MEDIUMjs/tests/license.test.ts852// ── getActiveSessionCount ─────────────────────────────COMMENT
MEDIUMjs/tests/license.test.ts916// ── getSessionSeats ───────────────────────────────────COMMENT
MEDIUMjs/tests/cli.test.ts114// ── formatSeats ───────────────────────────────────────COMMENT
MEDIUMtests/test_geoip.py52# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py54# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py71# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py73# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py126# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py128# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py143# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py145# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py300# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py302# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py320# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py322# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py19# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_geoip.py21# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistent_context.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistent_context.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistent_context.py216# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistent_context.py218# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_humanize_unit.py41# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py43# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py51# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py53# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py68# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py70# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py119# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py121# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py190# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py192# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py270# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py272# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py492# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py494# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py825# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py827# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py856# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py858# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py872# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py874# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py891# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py893# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py909# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py911# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1030# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1032# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1343# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1345# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1747# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1749# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1838# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1840# =========================================================================COMMENT
MEDIUMtests/test_humanize_unit.py1956# =========================================================================COMMENT
211 more matches not shown…
Cross-Language Confusion135 hits · 676 pts
SeverityFileLineSnippetContext
HIGHtests/test_stealth_resolver_js.py33 id: attrs.id || '', className: attrs.className || '', parentElement: null,CODE
HIGHtests/test_stealth_resolver_js.py37 e.children[i].previousElementSibling = i ? e.children[i - 1] : null;CODE
HIGHtests/test_stealth_resolver_js.py39 e.contains = (o) => (o === e) || e.children.some(c => c.contains && c.contains(o));CODE
HIGHtests/test_stealth_resolver_js.py44 const tagMatch = s.match(/^[a-zA-Z][\w-]*/); if (tagMatch && e.tagName.toLowerCase() !== tagMatch[0].toLowerCase()) CODE
HIGHtests/test_stealth_resolver_js.py51 const calls = { css: null, xpath: null };CODE
HIGHtests/test_stealth_resolver_js.py65 return { cls, text: el && el.textContent, tag: el && el.tagName, calls };CODE
HIGHtests/test_stealth_resolver_js.py168 if (!(Number.isInteger(g) && g >= 0 && g <= 2147483647)) {CODE
HIGHtests/test_launch.py83 """window.chrome should exist (Playwright leaks undefined)."""STRING
HIGHtests/test_stealth_reproduction_110.py37 window.__detections.evaluateQS.push(sel);CODE
HIGHtests/test_stealth_reproduction_110.py46 window.__detections.untrustedKeydown.push(e.key);CODE
HIGHtests/test_stealth_reproduction_110.py146 window.__evalLeaks.push(sel);CODE
HIGHtests/test_stealth_unit.py1273 if (e.stack && e.stack.includes(':302:')) {CODE
HIGHtests/test_stealth_unit.py1274 window.__evalLeaks.push(sel);CODE
HIGHtests/test_stealth_unit.py1283 window.__untrustedKeys.push(e.key);CODE
HIGHtests/test_stealth_unit.py1108 if (e.stack && e.stack.includes(':302:')) {CODE
HIGHtests/test_stealth_unit.py1109 window.__evaluateDetections.push(sel);CODE
HIGHtests/test_stealth_unit.py1152 window.__untrustedKeys.push(e.key);CODE
HIGHtests/test_stealth_unit.py1154 window.__trustedKeys.push(e.key);CODE
HIGHtests/test_stealth_unit.py1227 if (e.stack && e.stack.includes(':302:')) {CODE
HIGHtests/test_stealth_unit.py1228 window.__evalLeaks.push({sel, stack: e.stack.substring(0, 200)});CODE
HIGHtests/test_stealth_unit.py1335 if (e.stack && e.stack.includes(':302:')) {CODE
HIGHtests/test_stealth_unit.py1336 window.__evalLeaks.push(sel);CODE
HIGHtests/test_stealth_unit.py1371 if (!e.isTrusted) window.__untrusted.push(e.key);CODE
HIGHtests/test_license.py544 """Leaseless mode on the server → {"active": null}, never a false 0."""STRING
HIGHtests/test_stealth.py48 """window.chrome must be an object (not undefined)."""STRING
HIGHtests/test_stealth.py105 failed.push(cells[0].innerText.trim());CODE
HIGHtests/test_stealth.py166 const isBot = botMatch ? botMatch[1] === 'true' : null;CODE
HIGHtests/test_stealth.py214 return {score: scoreMatch ? parseFloat(scoreMatch[1]) : null};CODE
HIGHcloakbrowser/human/scroll.py50 "(() => { const e = document.scrollingElement || document.documentElement;"CODE
HIGHcloakbrowser/human/__init__.py1277 || node.getAttribute && node.getAttribute('contenteditable') === 'true';STRING
HIGHcloakbrowser/human/__init__.py2359 || node.getAttribute && node.getAttribute('contenteditable') === 'true';STRING
HIGHcloakbrowser/human/stealth_dom.py120 return rect.width > 0 && rect.height > 0;CODE
HIGHcloakbrowser/human/stealth_dom.py127 if (child.nodeType === 1 && __isVisible(child)) return true;CODE
HIGHcloakbrowser/human/stealth_dom.py128 if (child.nodeType === 3 && style.visibility === 'visible' && __visibleTextNode(child)) return true;CODE
HIGHcloakbrowser/human/stealth_dom.py139 return rect.width > 0 && rect.height > 0;CODE
HIGHcloakbrowser/human/stealth_dom.py143 if (style && style.display === 'contents') {CODE
HIGHcloakbrowser/human/stealth_dom.py147 let box = null;CODE
HIGHcloakbrowser/human/stealth_dom.py148 if (child.nodeType === 1 && __isVisible(child)) {CODE
HIGHcloakbrowser/human/stealth_dom.py150 } else if (child.nodeType === 3 && style.visibility === 'visible' &&CODE
HIGHcloakbrowser/human/stealth_dom.py155 if (rect.width > 0 && rect.height > 0) {CODE
HIGHcloakbrowser/human/stealth_dom.py166 return found ? { x: x1, y: y1, width: x2 - x1, height: y2 - y1 } : null;CODE
HIGHcloakbrowser/human/stealth_dom.py169 return rect.width > 0 && rect.height > 0CODE
HIGHcloakbrowser/human/stealth_dom.py171 : null;CODE
HIGHcloakbrowser/human/stealth_dom.py232 return null;CODE
HIGHcloakbrowser/human/stealth_dom.py242 const tag = el && el.tagName ? el.tagName.toLowerCase() : '';CODE
HIGHcloakbrowser/human/stealth_dom.py244 (document.head && document.head.contains(el));CODE
HIGHcloakbrowser/human/stealth_dom.py274 if (immediate) { fragments.push(immediate); immediate = ''; }CODE
HIGHcloakbrowser/human/stealth_dom.py278 if (immediate) fragments.push(immediate);CODE
HIGHcloakbrowser/human/stealth_dom.py286 const r = document.evaluate(xp, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);CODE
HIGHcloakbrowser/human/stealth_dom.py288 for (let i = 0; i < r.snapshotLength; i++) { out.push(r.snapshotItem(i)); }CODE
HIGHcloakbrowser/human/stealth_dom.py298 if (!escaped && ch === '/') end = i;CODE
HIGHcloakbrowser/human/stealth_dom.py299 escaped = !escaped && ch === '\\';CODE
HIGHcloakbrowser/human/stealth_dom.py336 if (el.shadowRoot && __matchTextValue(__elementText(el.shadowRoot, cache), matcher))CODE
HIGHcloakbrowser/human/stealth_dom.py344 let lastMiss = null;CODE
HIGHcloakbrowser/human/stealth_dom.py347 if (matcher.kind === 'lax' && lastMiss && lastMiss.contains(el)) continue;CODE
HIGHcloakbrowser/human/stealth_dom.py351 if (m === 'self' || (m === 'selfAndChildren' && matcher.kind === 'exact')) out.push(el);CODE
HIGHcloakbrowser/human/stealth_dom.py407 return { name: name, regex: null, value: un.value, caseSensitive: caseSensitive };CODE
HIGHcloakbrowser/human/stealth_dom.py417 const lower = (parsed.regex || parsed.caseSensitive) ? null : parsed.value.toLowerCase();CODE
HIGHcloakbrowser/human/stealth_dom.py424 if (actual === null || actual === undefined) continue;CODE
HIGHcloakbrowser/human/stealth_dom.py424 if (actual === null || actual === undefined) continue;CODE
75 more matches not shown…
Hyper-Verbose Identifiers690 hits · 585 pts
SeverityFileLineSnippetContext
LOWjs/src/license.ts338export function resolveLicenseKeyWithSource(CODE
LOWjs/src/download.ts342export function resetPreviewFallbackWarned(): void {CODE
LOWjs/src/download.ts1207export function resetWrapperUpdateChecked(): void {CODE
LOWjs/src/proxy.ts76function lenientDecodeURIComponent(s: string): string {CODE
LOWjs/src/config.ts75export function normalizeRequestedVersion(version?: string): string | undefined {CODE
LOWjs/src/config.ts279export function binarySupportsHeadlessNoViewport(CODE
LOWjs/src/config.ts326export function binarySupportsMaximizedWindow(CODE
LOWjs/src/config.ts366export function binarySupportsHttpProxyInlineAuth(CODE
LOWtests/test_font_warning.py43def test_warns_when_no_windows_fonts(tmp_path, capsys, monkeypatch):CODE
LOWtests/test_font_warning.py55def test_in_process_flag_blocks_second_call(tmp_path, capsys):CODE
LOWtests/test_font_warning.py68def test_marker_suppresses_across_processes(tmp_path, capsys):CODE
LOWtests/test_font_warning.py80def test_env_suppresses_and_writes_no_marker(tmp_path, capsys, monkeypatch):CODE
LOWtests/test_font_warning.py92def test_no_warn_on_non_linux(tmp_path, capsys):CODE
LOWtests/test_font_warning.py101def test_no_warn_when_platform_overridden(tmp_path, capsys):CODE
LOWtests/test_font_warning.py110def test_no_warn_no_crash_when_fc_list_absent(tmp_path, capsys):CODE
LOWtests/test_font_warning.py121def test_no_warn_when_full_set_present(tmp_path, capsys):CODE
LOWtests/test_font_warning.py131def test_warns_on_partial_set(tmp_path, capsys):CODE
LOWtests/test_stealth_resolver_js.py180def test_resolver_selector_semantics():STRING
LOWtests/test_geoip.py57def test_locale_map_has_common_countries():CODE
LOWtests/test_geoip.py76def test_default_geoip_timeout_is_twenty_seconds():CODE
LOWtests/test_geoip.py131def test_resolve_exit_ip_no_proxy_fetches_directly():CODE
LOWtests/test_geoip.py148def test_maybe_resolve_skips_when_geoip_false():CODE
LOWtests/test_geoip.py155def test_maybe_resolve_no_proxy_uses_machine_ip():CODE
LOWtests/test_geoip.py185def test_maybe_resolve_skips_when_both_explicit():CODE
LOWtests/test_geoip.py194def test_maybe_resolve_fills_missing_timezone():CODE
LOWtests/test_geoip.py202def test_maybe_resolve_fills_missing_locale():CODE
LOWtests/test_geoip.py210def test_maybe_resolve_fills_both():CODE
LOWtests/test_geoip.py219def test_maybe_resolve_raw_timezone_flag_wins_over_geoip():CODE
LOWtests/test_geoip.py290def test_maybe_resolve_geoip_rejects_incomplete_result():CODE
LOWtests/test_geoip.py325def test_download_overwrites_existing_db(tmp_path):CODE
LOWtests/test_geoip.py92def test_resolve_geo_raises_when_exit_ip_missing():CODE
LOWtests/test_geoip.py103def test_resolve_geo_raises_when_db_missing():CODE
LOWtests/test_geoip.py114def test_resolve_geo_raises_when_lookup_fails():CODE
LOWtests/test_geoip.py169def test_maybe_resolve_no_proxy_both_explicit_skips_ip():CODE
LOWtests/test_geoip.py234def test_maybe_resolve_raw_lang_flag_wins_over_geoip():CODE
LOWtests/test_geoip.py247def test_maybe_resolve_raw_flags_both_skip_geo_lookup():CODE
LOWtests/test_geoip.py262def test_maybe_resolve_param_beats_raw_flag():CODE
LOWtests/test_geoip.py276def test_maybe_resolve_geoip_timeout_aborts_launch(monkeypatch):CODE
LOWtests/test_geoip.py356def test_ensure_db_downloads_once_under_concurrency(tmp_path):CODE
LOWtests/test_launch.py15def test_removed_backend_kwarg_raises(env, monkeypatch):CODE
LOWtests/test_launch.py63def test_launch_with_extra_args():CODE
LOWtests/test_launch.py82def test_chrome_object_exists():CODE
LOWtests/test_resolver_sources_match.py44def test_resolver_bodies_are_byte_identical():CODE
LOWtests/test_resolver_sources_match.py63def test_resolver_has_no_host_literal_hazards(name):CODE
LOWtests/test_persistent_context.py13def _make_mock_pw_and_context():CODE
LOWtests/test_persistent_context.py30def test_persistent_context_args_built(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py221def _make_mock_async_pw_and_context():CODE
LOWtests/test_persistent_context.py46def test_persistent_context_default_viewport(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py60def test_persistent_context_headed_no_viewport(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py76def test_persistent_context_custom_viewport(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py91def test_persistent_context_user_agent(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py104def test_persistent_context_locale_and_timezone(_mock_bin):CODE
LOWtests/test_persistent_context.py123def test_persistent_context_color_scheme(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py137def test_persistent_context_geoip(_mock_bin, _mock_geoip):CODE
LOWtests/test_persistent_context.py155def test_persistent_context_timezone_id_alias(_mock_bin):CODE
LOWtests/test_persistent_context.py170def test_persistent_context_close_stops_pw(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py187def test_persistent_context_proxy_string(_mock_geoip, _mock_bin, _mock_platform):CODE
LOWtests/test_persistent_context.py203def test_persistent_context_proxy_dict(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py234async def test_persistent_context_async_args_built(_mock_geoip, _mock_bin):CODE
LOWtests/test_persistent_context.py250async def test_persistent_context_async_close_stops_pw(_mock_geoip, _mock_bin):CODE
630 more matches not shown…
Excessive Try-Catch Wrapping136 hits · 118 pts
SeverityFileLineSnippetContext
LOWbin/fetch-widevine.py299 except Exception as e: # noqa: BLE001 — top-level guard; entrypoint treats nonzero as soft-failCODE
LOWtests/test_humanize_unit.py2438 except Exception:CODE
LOWtests/test_stealth_unit.py925 except Exception:CODE
LOWtests/test_stealth.py188 except Exception:CODE
LOWcloakbrowser/download.py761 except Exception as exc:CODE
LOWcloakbrowser/download.py769 except Exception:CODE
LOWcloakbrowser/download.py777 except Exception:CODE
LOWcloakbrowser/download.py126 except Exception:CODE
LOWcloakbrowser/download.py247 except Exception as e:CODE
LOWcloakbrowser/download.py363 except Exception as primary_err:CODE
LOWcloakbrowser/download.py503 except Exception:CODE
LOWcloakbrowser/download.py594 except Exception as exc:CODE
LOWcloakbrowser/download.py743 except Exception:CODE
LOWcloakbrowser/download.py805 except Exception:CODE
LOWcloakbrowser/download.py1022 except Exception:CODE
LOWcloakbrowser/download.py1187 except Exception:CODE
LOWcloakbrowser/download.py1248 except Exception:CODE
LOWcloakbrowser/download.py1283 except Exception:CODE
MEDIUMcloakbrowser/browser.py984def _close_context_with_cleanup() -> None:CODE
LOWcloakbrowser/browser.py116 except Exception:CODE
LOWcloakbrowser/browser.py145 except Exception as exc:CODE
LOWcloakbrowser/browser.py187 except Exception as exc:CODE
LOWcloakbrowser/browser.py401 except Exception as exc:CODE
LOWcloakbrowser/browser.py405 except Exception as stop_exc:CODE
LOWcloakbrowser/browser.py528 except Exception as exc:CODE
LOWcloakbrowser/browser.py532 except Exception as stop_exc:CODE
LOWcloakbrowser/browser.py689 except Exception as exc:CODE
LOWcloakbrowser/browser.py693 except Exception as stop_exc:CODE
LOWcloakbrowser/browser.py851 except Exception as exc:CODE
LOWcloakbrowser/browser.py855 except Exception as stop_exc:CODE
LOWcloakbrowser/browser.py977 except Exception:CODE
LOWcloakbrowser/browser.py1364 except Exception:CODE
LOWcloakbrowser/browser.py1599 except Exception:CODE
LOWcloakbrowser/browser.py1606 except Exception:CODE
LOWcloakbrowser/geoip.py147 except Exception as exc:CODE
LOWcloakbrowser/geoip.py182 except Exception as exc:CODE
LOWcloakbrowser/geoip.py280 except Exception:CODE
LOWcloakbrowser/geoip.py313 except Exception as exc:CODE
LOWcloakbrowser/geoip.py347 except Exception:CODE
LOWcloakbrowser/geoip.py367 except Exception:CODE
LOWcloakbrowser/widevine.py122 except Exception:CODE
LOWcloakbrowser/widevine.py127 except Exception as e:CODE
LOWcloakbrowser/license.py418 except Exception as e:CODE
LOWcloakbrowser/license.py488 except Exception as e:CODE
LOWcloakbrowser/license.py534 except Exception as e:CODE
LOWcloakbrowser/license.py546 except Exception:CODE
LOWcloakbrowser/license.py554 except Exception as e:CODE
LOWcloakbrowser/__main__.py139 except Exception as exc:CODE
LOWcloakbrowser/__main__.py284 except Exception as exc:CODE
LOWcloakbrowser/__main__.py289 except Exception as exc: # platform unsupported, etc.CODE
LOWcloakbrowser/__main__.py345 except Exception as exc: # network/proxy failure — never crash `info`CODE
LOWcloakbrowser/__main__.py591 except Exception:CODE
LOWcloakbrowser/__main__.py723 except Exception as e:CODE
MEDIUMcloakbrowser/__main__.py724 print(f"Error: {e}", file=sys.stderr)CODE
LOWcloakbrowser/human/scroll_async.py56 except Exception as exc:CODE
LOWcloakbrowser/human/scroll_async.py103 except Exception as exc:CODE
LOWcloakbrowser/human/scroll.py62 except Exception as exc:CODE
LOWcloakbrowser/human/scroll.py110 except Exception as exc:CODE
LOWcloakbrowser/human/__init__.py1258 except Exception:CODE
LOWcloakbrowser/human/__init__.py1280 except Exception:CODE
76 more matches not shown…
Unused Imports66 hits · 57 pts
SeverityFileLineSnippetContext
LOWtests/test_resolver_sources_match.py14CODE
LOWtests/test_stealth_unit.py17CODE
LOWtests/test_stealth_unit.py19CODE
LOWtests/test_stealth_unit.py22CODE
LOWtests/test_update.py3CODE
LOWtests/test_extract.py4CODE
LOWtests/test_extract.py6CODE
LOWtests/test_lambda_security.py3CODE
LOWtests/test_lambda_security.py7CODE
LOWcloakbrowser/config.py3CODE
LOWcloakbrowser/download.py7CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py14CODE
LOWcloakbrowser/__init__.py15CODE
LOWcloakbrowser/__init__.py15CODE
LOWcloakbrowser/__init__.py16CODE
LOWcloakbrowser/__init__.py16CODE
LOWcloakbrowser/__init__.py16CODE
LOWcloakbrowser/__init__.py16CODE
LOWcloakbrowser/__init__.py17CODE
LOWcloakbrowser/__init__.py17CODE
LOWcloakbrowser/__init__.py17CODE
LOWcloakbrowser/__init__.py18CODE
LOWcloakbrowser/browser.py15CODE
LOWcloakbrowser/geoip.py11CODE
LOWcloakbrowser/widevine.py23CODE
LOWcloakbrowser/license.py7CODE
LOWcloakbrowser/__main__.py11CODE
LOWcloakbrowser/human/scroll_async.py7CODE
LOWcloakbrowser/human/config.py7CODE
LOWcloakbrowser/human/config.py9CODE
LOWcloakbrowser/human/config.py12CODE
LOWcloakbrowser/human/keyboard_async.py10CODE
LOWcloakbrowser/human/keyboard_async.py13CODE
LOWcloakbrowser/human/keyboard_async.py15CODE
LOWcloakbrowser/human/keyboard_async.py16CODE
LOWcloakbrowser/human/scroll.py3CODE
LOWcloakbrowser/human/mouse_async.py7CODE
LOWcloakbrowser/human/mouse_async.py11CODE
LOWcloakbrowser/human/mouse_async.py14CODE
LOWcloakbrowser/human/__init__.py14CODE
LOWcloakbrowser/human/__init__.py16CODE
LOWcloakbrowser/human/__init__.py22CODE
LOWcloakbrowser/human/__init__.py22CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/__init__.py30CODE
LOWcloakbrowser/human/actionability.py7CODE
LOWcloakbrowser/human/stealth_dom.py34CODE
LOWcloakbrowser/human/mouse.py3CODE
6 more matches not shown…
Over-Commented Block46 hits · 45 pts
SeverityFileLineSnippetContext
LOWbin/docker-entrypoint.sh1#!/bin/bashCOMMENT
LOWbin/docker-entrypoint.sh21doneCOMMENT
LOWjs/src/fonts.ts1// ---------------------------------------------------------------------------COMMENT
LOWjs/src/config.ts41// ---------------------------------------------------------------------------COMMENT
LOWjs/src/config.ts401}COMMENT
LOWjs/src/human/elementhandle.ts141 // Accepts a per-call ``callCfg`` so type/fill overrides likeCOMMENT
LOWcloakbrowser/config.py361 if version is None:COMMENT
LOWcloakbrowser/browser.py1481#COMMENT
LOWdotnet/tests/CloakBrowser.Tests/ViewportTests.cs1using CloakBrowser;COMMENT
LOW…loakBrowser.Tests/Wrappers/GeneratorDelegationTests.cs141 Assert.NotNull(wrapper.GetProperty("Inner"));COMMENT
LOWdotnet/src/CloakBrowser/ViewportDefaults.cs1using Microsoft.Playwright;COMMENT
LOWdotnet/src/CloakBrowser/Download.cs21/// <summary>COMMENT
LOWdotnet/src/CloakBrowser/Download.cs181 /// Ensure the stealth Chromium binary is available. Download if needed.COMMENT
LOWdotnet/src/CloakBrowser/Download.cs561 /// <summary>COMMENT
LOWdotnet/src/CloakBrowser/Download.cs661 catch (IOException) { }COMMENT
LOWdotnet/src/CloakBrowser/Download.cs1141 }COMMENT
LOWdotnet/src/CloakBrowser/Handles.cs61 Browser = (IBrowser)LicenseGuard.Wrap(visible, denialPath);COMMENT
LOWdotnet/src/CloakBrowser/Handles.cs81 public Task<IBrowserContext> NewContextAsync(BrowserNewContextOptions? options = null) =>COMMENT
LOWdotnet/src/CloakBrowser/Handles.cs121/// A denial that lands after Playwright connected kills the browser without a launchCOMMENT
LOWdotnet/src/CloakBrowser/Config.cs41 "MKFKwIhUcKWq5xTuNA0Ovg99njcDEcEJvmWYYhApvaU=",COMMENT
LOWdotnet/src/CloakBrowser/Config.cs401 /// </summary>COMMENT
LOWdotnet/src/CloakBrowser/Config.cs461 /// <summary>COMMENT
LOWdotnet/src/CloakBrowser/CloakLauncher.cs581 }COMMENT
LOWdotnet/src/CloakBrowser/Widevine.cs1using System.Runtime.InteropServices;COMMENT
LOWdotnet/src/CloakBrowser/LaunchOptions.cs41 /// <summary>Chrome extension paths to load.</summary>COMMENT
LOWdotnet/src/CloakBrowser/LaunchOptions.cs61 /// Binary release channel (<c>stable</c> or <c>preview</c>). Also read from theCOMMENT
LOWdotnet/src/CloakBrowser/License.cs1using System.Security.Cryptography;COMMENT
LOWdotnet/src/CloakBrowser/License.cs21/// <list type="bullet">COMMENT
LOWdotnet/src/CloakBrowser/License.cs41public sealed record ProReleaseInfo(COMMENT
LOWdotnet/src/CloakBrowser/License.cs61internal enum LicenseKeySourceCOMMENT
LOWdotnet/src/CloakBrowser/License.cs141 {COMMENT
LOWdotnet/src/CloakBrowser/License.cs161 /// </summary>COMMENT
LOWdotnet/src/CloakBrowser/License.cs281 internal static Func<ProReleaseInfo?>? ProLatestReleaseOverride;COMMENT
LOWdotnet/src/CloakBrowser/License.cs341 return (null, LicenseKeySource.None);COMMENT
LOWdotnet/src/CloakBrowser/License.cs361 /// </list>COMMENT
LOWdotnet/src/CloakBrowser/License.cs641 /// <summary>Get only the version from the server-resolved Pro release.</summary>COMMENT
LOWdotnet/src/CloakBrowser/Wrappers/Humanize.cs1using System.Collections.Generic;COMMENT
LOW…et/src/CloakBrowser/Wrappers/HumanizedElementHandle.cs1using CloakBrowser.Human;COMMENT
LOWdotnet/src/CloakBrowser/Human/HumanPage.cs21COMMENT
LOWdotnet/src/CloakBrowser/Human/HumanRandom.cs1namespace CloakBrowser.Human;COMMENT
LOWdotnet/src/CloakBrowser/Human/HumanKeyboard.cs101 return ch;COMMENT
LOWdotnet/src/CloakBrowser/Human/HumanScroll.cs1namespace CloakBrowser.Human;COMMENT
LOWdotnet/src/CloakBrowser/Human/HumanScroll.cs21 /// <summary>COMMENT
LOWdotnet/src/CloakBrowser.Cli/Program.cs1using System.Diagnostics;COMMENT
LOWexamples/integrations/agent_browser.sh1#!/bin/bashCOMMENT
LOWexamples/integrations/aws_lambda/lambda-entrypoint.sh1#!/bin/shCOMMENT
Deep Nesting27 hits · 20 pts
SeverityFileLineSnippetContext
LOWbin/fetch-widevine.py74CODE
LOWtests/test_geoip.py92CODE
LOWtests/test_geoip.py103CODE
LOWtests/test_geoip.py114CODE
LOWtests/test_resolver_sources_match.py44CODE
LOWtests/test_update.py505CODE
LOWtests/test_update.py587CODE
LOWtests/test_lambda_security.py131CODE
LOWcloakbrowser/config.py212CODE
LOWcloakbrowser/download.py852CODE
LOWcloakbrowser/download.py935CODE
LOWcloakbrowser/download.py1170CODE
LOWcloakbrowser/geoip.py318CODE
LOWcloakbrowser/license.py213CODE
LOWcloakbrowser/license.py429CODE
LOWcloakbrowser/license.py581CODE
LOWcloakbrowser/__main__.py148CODE
LOWcloakbrowser/__main__.py392CODE
LOWcloakbrowser/human/__init__.py1660CODE
LOWcloakbrowser/human/__init__.py2751CODE
LOWcloakbrowser/human/__init__.py108CODE
LOWcloakbrowser/human/__init__.py176CODE
LOWcloakbrowser/human/actionability.py248CODE
LOWcloakbrowser/human/actionability.py300CODE
LOWcloakbrowser/human/actionability_async.py158CODE
LOWcloakbrowser/human/actionability_async.py205CODE
LOWexamples/fingerprint_scan_test.py89CODE
Verbosity Indicators5 hits · 11 pts
SeverityFileLineSnippetContext
LOWexamples/integrations/browser_use_example.py18 # Step 1: Launch CloakBrowser (handles binary, stealth args, fingerprints)COMMENT
LOWexamples/integrations/browser_use_example.py24 # Step 2: Connect browser-use to the stealth browser via CDPCOMMENT
LOWexamples/integrations/browser_use_example.py27 # Step 3: Run your AI agent — it browses through CloakBrowserCOMMENT
LOWexamples/integrations/crawl4ai_example.py17 # Step 1: Launch CloakBrowser with remote debuggingCOMMENT
LOWexamples/integrations/crawl4ai_example.py23 # Step 2: Connect Crawl4AI to the stealth browser via CDPCOMMENT
Structural Annotation Overuse5 hits · 11 pts
SeverityFileLineSnippetContext
LOWexamples/integrations/browser_use_example.py18 # Step 1: Launch CloakBrowser (handles binary, stealth args, fingerprints)COMMENT
LOWexamples/integrations/browser_use_example.py24 # Step 2: Connect browser-use to the stealth browser via CDPCOMMENT
LOWexamples/integrations/browser_use_example.py27 # Step 3: Run your AI agent — it browses through CloakBrowserCOMMENT
LOWexamples/integrations/crawl4ai_example.py17 # Step 1: Launch CloakBrowser with remote debuggingCOMMENT
LOWexamples/integrations/crawl4ai_example.py23 # Step 2: Connect Crawl4AI to the stealth browser via CDPCOMMENT
Self-Referential Comments3 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_update.py455 # Create the binary dir so it looks already downloadedCOMMENT
MEDIUMtests/test_update.py494 # Create a fake cached binaryCOMMENT
MEDIUMtests/test_license.py710 # Create the binary so effective version returns itCOMMENT
AI Slop Vocabulary3 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMcloakbrowser/browser.py1433 # feature set matches a stock browser rather than a test harness. Merged into anyCOMMENT
MEDIUMexamples/fingerprint_scan_test.py90 """abrahamjuliot.github.io/creepjs — comprehensive fingerprint analysis."""STRING
MEDIUMexamples/stealth_test.py53 """bot.incolumitas.com — comprehensive 30+ check bot detection."""STRING
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHcloakbrowser/human/config.py179Resolve a preset name + optional overrides into a full HumanConfig. Args: preset: 'default' or 'careful'. STRING
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOWREADME.md609page.locator("#email").fill("user@example.com") # per-character timing, thinking pausesCODE
LOWREADME.md1370 page.type("#email", "user@example.com", delay=50)CODE
LOWjs/README.md326 await page.type('#email', 'user@example.com', { delay: 50 });CODE
LOWjs/src/puppeteer.ts178 * await page.type('#email', 'user@example.com'); // Per-character timingCOMMENT
AI Structural Patterns6 hits · 3 pts
SeverityFileLineSnippetContext
LOWcloakbrowser/browser.py319CODE
LOWcloakbrowser/browser.py449CODE
LOWcloakbrowser/browser.py573CODE
LOWcloakbrowser/browser.py733CODE
LOWcloakbrowser/browser.py895CODE
LOWcloakbrowser/browser.py1008CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMexamples/integrations/aws_lambda/INSTRUCTIONS.md113### Retry orchestrationCOMMENT
Modern Structural Boilerplate3 hits · 2 pts
SeverityFileLineSnippetContext
LOWcloakbrowser/__init__.py32__all__ = [CODE
LOWcloakbrowser/__main__.py49def _setup_logging() -> None:CODE
LOWcloakbrowser/human/__init__.py61__all__ = [CODE
Redundant / Tautological Comments1 hit · 0 pts
SeverityFileLineSnippetContext
LOWtests/test_stealth_unit.py1122 # Check if any querySelector calls came from evaluate contextSTRING