{
  "schemaVersion": 1,
  "generatedAt": "2026-10-27T03:36:56.437Z",
  "durationMs": 32925,
  "siteName": "fingerprintjs GitHub readmes",
  "summary": {
    "linksChecked": 1575,
    "totalLinksToFix": 2,
    "brokenLinks": 2,
    "hashNotFound": 0,
    "networkErrors": 0,
    "couldNotCheck": 0,
    "ignored": 17
  },
  "brokenLinks": [
    {
      "page": "https://github.com/fingerprintjs/BotD/blob/main/README.md",
      "href": "https://fingerprintjs.github.io/BotD",
      "text": "⚡ View Our Demo",
      "result": {
        "ok": false,
        "error": "broken link",
        "status": 404,
        "errorDetail": "Not Found <!DOCTYPE html>\n<html>\n  <head>\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n    <meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'none'; style-src 'unsafe-inline'; img-src data:; connect-src 'self'\">\n    <title>Site not found &middot; GitHub Pages</title>\n    <style type=\"text/css\" media=\"screen\">\n      body {\n        background-color: #f1f1f1;\n        margin: 0;\n        font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n      }\n\n      .contai…"
      },
      "brokenSince": "2026-10-21T03:35:59.879Z"
    },
    {
      "page": "https://github.com/fingerprintjs/aws-cloudfront-proxy/blob/main/README.md",
      "href": "https://docs.fingerprint.com/docs/cloudfront-proxy-integration",
      "text": "deprecated",
      "result": {
        "ok": false,
        "error": "broken link",
        "status": 404,
        "errorDetail": "Not Found <!DOCTYPE html><html id=\"__next_error__\"><head><meta charSet=\"utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\"/><link rel=\"preload\" as=\"script\" fetchPriority=\"low\" href=\"/mintlify-assets/_next/static/chunks/fef82564330d369d.js?dpl=dpl_4EHQjyeKbh4xFzDvMQzfb546Rm45\"/><script src=\"/mintlify-assets/_next/static/chunks/44795504c795ca32.js?dpl=dpl_4EHQjyeKbh4xFzDvMQzfb546Rm45\" async=\"\"></script><script src=\"/mintlify-assets/_next/static/chunks/2ea0cfb38e5…"
      },
      "brokenSince": "2026-10-21T03:35:59.879Z"
    }
  ],
  "hashNotFound": [],
  "networkErrors": [],
  "couldNotCheck": [],
  "ignored": [
    {
      "page": "https://github.com/fingerprintjs/cdn/blob/master/readme.md",
      "href": "https://npmjs.com",
      "text": "NPM",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-qWmzbI1A9BfH9awIYRrHo6&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/react-native/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "NPM",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/react-native/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "NPM",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprintjs-pro-spa/blob/main/README.md",
      "href": "https://www.npmjs.com/package/@fingerprint/agent",
      "text": "JavaScript Agent v4",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-XTSTwB7wtskDaym8GcBMpg&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprintjs-pro-spa/blob/main/README.md",
      "href": "https://www.npmjs.com/package/@fingerprintjs/fingerprintjs-pro",
      "text": "JavaScript Agent",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-OYfgg7QMCA2tGr6lBoR2hb&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprintjs-pro-spa/blob/main/README.md",
      "href": "https://www.npmjs.com/package/@fingerprintjs/fingerprintjs-pro",
      "text": "JS agent",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-OYfgg7QMCA2tGr6lBoR2hb&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprintjs-pro-spa/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "npm",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/react/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "npm",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/flutter/blob/main/README.md",
      "href": "https://www.npmjs.com/package/@fingerprint/agent",
      "text": "Fingerprint JavaScript agent",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-XTSTwB7wtskDaym8GcBMpg&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprintjs-pro-use-cases/blob/main/README.md",
      "href": "https://codesandbox.io/p/devbox/github/fingerprintjs/fingerprintjs-pro-use-cases/",
      "text": "CodeSandbox",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-P2xdQiZ6lIGJvFzNj6BVLN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "Blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/angular/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "npm",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/broyster/blob/main/readme.md",
      "href": "https://npmjs.com/package/@fpjs-incubator/broyster",
      "text": "@fpjs-incubator/broyster",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-rJc424p4mU0POFL8dReJPi&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/package/@fpjs-incubator/broyster"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/url-matcher/blob/main/README.md",
      "href": "https://npmjs.org",
      "text": "npm",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-Rw4DAmyIZe5X88SXy6E6dN&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…",
        "redirectedTo": "https://www.npmjs.com/"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprint-mcp-server/blob/main/README.md",
      "href": "https://mcp.fpjs.io/mcp",
      "text": "https://mcp.fpjs.io/mcp",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 401,
        "errorDetail": "no bearer token"
      },
      "ignoreReason": "Fingerprint MCP server, requires a bearer token (401)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprint-mcp-server/blob/main/README.md",
      "href": "https://mcp.fpjs.io/mcp",
      "text": "https://mcp.fpjs.io/mcp",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 401,
        "errorDetail": "no bearer token"
      },
      "ignoreReason": "Fingerprint MCP server, requires a bearer token (401)"
    },
    {
      "page": "https://github.com/fingerprintjs/fingerprint-cli/blob/main/README.md",
      "href": "https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk",
      "text": "@anthropic-ai/claude-agent-sdk",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 403,
        "errorDetail": "<!DOCTYPE html><html lang=\"en-US\"><head><title>Just a moment...</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"><meta name=\"robots\" content=\"noindex,nofollow\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><meta http-equiv=\"content-security-policy\" content=\"default-src &#39;none&#39;; script-src &#39;nonce-rHnSST1luZMn3sN9luEwsx&#39; &#39;unsafe-eval&#39; https://challenges.cloudflare.com; script-s…"
      },
      "ignoreReason": "npm blocks automated clients with a Cloudflare challenge (403)"
    },
    {
      "page": "https://github.com/fingerprintjs/skills/blob/main/README.md",
      "href": "https://cursor.directory/plugins/fingerprint",
      "text": "Cursor directory",
      "result": {
        "ok": false,
        "error": "could not check",
        "status": 429,
        "errorDetail": "Rate limited, no Retry-After <!DOCTYPE html><html lang=\"en\" data-astro-cid-4wdtffzm><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta name=\"theme-color\" content=\"#000\"><link rel=\"icon\" href=\"data:,\"><title>Vercel Security Checkpoint</title><style>.spinner[data-astro-cid-ijmsm3te]{flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-circle[data-astro-cid-ijmsm3te]{transform-origin:50%;animation:1s step-start infinite spinner-circle-animate}r…"
      },
      "ignoreReason": "Blocks automated clients with a Vercel Security Checkpoint (429)"
    }
  ],
  "diff": {
    "new": 0,
    "fixed": 0
  }
}