Loading...
Loading...
Check whether a Playwright, Puppeteer, Selenium or CDP-driven browser presents a coherent fingerprint, using liarjs as a library against a Page you already have - navigator.webdriver, HeadlessChrome tokens, worker versus main-thread identity, patched-API integrity, WebGL versus WebGPU GPU identity. Use when asked whether an automated browser looks like a normal one, when a headless setup or a stealth plugin's effect needs measuring rather than assuming, or when an assertion on fingerprint quality belongs in a test suite.
npx skill4agent add liarjsdev/liarjs-skills playwright-stealth-verifyliarjscheckPageevaluate(expression: string)Pageimport { checkPage } from 'liarjs';
const result = await checkPage(page);
expect(result.score).toBeGreaterThanOrEqual(85);
// Or assert on specific ids rather than a single number:
const critical = result.checks.filter((c) => c.status === 'bad');
expect(critical, JSON.stringify(critical, null, 2)).toHaveLength(0);ScanResult{ score, label, checks[], client, server, meta }clientservermeta.schemanpm install --save-dev liarjsnpx liarjs@0.3 --cdp http://127.0.0.1:9222./chrome --remote-debugging-port=9222 &
npx liarjs@0.3 --cdp http://127.0.0.1:9222npx liarjs@0.3| id | what it catches in an automation harness | max deduction |
|---|---|---|
| | 40 |
| an injected override that no longer reports | 35 |
| a | 30 |
| an override applied to the main thread only, so a Web Worker tells a different story | 20 |
| | 10 |
| WebGL and WebGPU naming different GPUs after a GPU-related flag change | 22 |
| a UA claiming Chrome while | 12 |
| a plain Chromium build that cannot play H.264 while claiming Chrome | 6 |
worker-consistencynative-integritybrowser-fingerprint-auditreferences/checks.md--offline--offlinehttps://liarjs.dev/api/net.json--endpointabout:blank--page <url>headless-uaheadless-viewportwebdriverworker-consistencyfingerprint-failure-triagefingerprint-ci-gate