{"_id":"@ahmedelsharkawycs/browser-fingerprinting","_rev":"7-e6707325365e3619707b4867f108e30a","name":"@ahmedelsharkawycs/browser-fingerprinting","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.0","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","audio-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.0","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"0f56d6d650d47e274eac0d0a6319c5006e1fa48a","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.0.tgz","fileCount":9,"integrity":"sha512-R12DKOe+CUneiK3e3cgvk44L2YnliYuneHBplt0d34VIqHfaiyqrf0hpVcuFebjfE456hmY/KARm5cPoNOm5oA==","signatures":[{"sig":"MEQCIEPz0qhzBOOT2Dt13x7vqGqSV1M0D1GrqkkU9tWKMu1RAiAu13YsLAxBWTUCeFt7yWWex954ZwKDmjliBA1EU2lR7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25702},"main":"build/index.js","types":"build/index.d.ts","gitHead":"8bdf99189459dbb826b9be67a77e35ee02699d85","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.0_1749385371492_0.913160673421693","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.1","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","audio-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.1","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"7dcd7114de1c8404a9cdccc746a83c263602bb42","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.1.tgz","fileCount":9,"integrity":"sha512-U4aZiGmXnPNhv8FV5z8+QM8qwSKHcuJsBPZ9N1cTihnMgRZpZeyD9kY/TcIYWnBwDqlhHtCpW40QVHt+37RBww==","signatures":[{"sig":"MEYCIQCQrGQVXe4Nn0zgaSGfPxqYGKfY7fwYYL/rPbjvasObtAIhAMbY9FQjcRIKnUoe7271R+6bM94SCljW24Ui67ZO+9j+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28366},"main":"build/index.js","types":"build/index.d.ts","gitHead":"8ba0f554dcaea7ddf26d7f7f48bf9ff999b50581","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.1_1749511487138_0.10532085157954718","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.2","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","audio-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.2","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"396c4bea0f1077ed008dd62718bbe65c0a2a0591","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.2.tgz","fileCount":9,"integrity":"sha512-6+5uq4qr5zwBZdUeiyStpwb/fMbfckyftXPsrE6pMoBGr6B9KpsqzQMmyySkkYnJt8f7BGTuWlsxIrD3e9kQRA==","signatures":[{"sig":"MEUCIGKHIWOBtQSXmCD124zGXdk5CVkBsauA846E/y3UX8W0AiEA3Y8St6Xy08ywP9IlZbVk+D4yqq+Y10RK7n8o70Rme88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29764},"main":"build/index.js","types":"build/index.d.ts","gitHead":"77f8deac139c7d754df548db6028ddaddebe5544","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.2_1749511925919_0.8868628956567797","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.3","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","audio-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.3","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"cfb45aea0b4738e386d0f91d8e4669cf781ee338","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.3.tgz","fileCount":9,"integrity":"sha512-0kM8bmBYkiM+XwQeWNY4cgRY7Cwvn3JWulplxoDmjedoSyo/GdT8pFmOnG9JEJFkd+1ZdoCz3rnyRYKr0fTw4A==","signatures":[{"sig":"MEQCIGKdYaAPyRY5s7Iz7GUckdmHneILp6xrr3W/AkgqVVHMAiAGwqq0CbGsZBxOkFsNq30b/L8V79E7cbZzCifkdOUjdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29682},"main":"build/index.js","types":"build/index.d.ts","gitHead":"77f8deac139c7d754df548db6028ddaddebe5544","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.3_1749512538282_0.23413688153087509","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.4","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","audio-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.4","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"a07eaee44a115bde062d4b3032e057c763f3ea02","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.4.tgz","fileCount":9,"integrity":"sha512-MZ2KS+6Gu9IQPFh2H3nJRDBTPSPLQzLXlZfZIf2N2w1/Lm1aLZ8pmbgyoL/kHPMszAUC7ADVlgjnzI0DobFJAw==","signatures":[{"sig":"MEUCIQDfMq0iA48qhKqUbw3UzvVFGmooi8Gd0Dnz0rVVL5kv+gIgIYCRcA3QHLvNvBI0tMsopJbg65z2NsgDt/VO5Sl/cuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29225},"main":"build/index.js","types":"build/index.d.ts","gitHead":"c411625cb6c529b3f00c4eeca42564ae02856e66","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.4_1749513621674_0.7396969442193084","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.5","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.5","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"dist":{"shasum":"e5e66f0e51de16771bfe573ad9c011aa39401624","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.5.tgz","fileCount":9,"integrity":"sha512-j2tWOYGwNAutjLkeMRXPXYiKLwtN6af98Sr3cerYRZFJ1lJontK4SNAjjY1V3onJS3w3hgBqgrjGf0pfqddCwg==","signatures":[{"sig":"MEQCIFVnP+jpqysLdD0I9iXwq8XzEDIqKmZ2CyOP5yeBOL03AiBM/fCtxFrp4Gi1Nlz8niISMHM5U00Xl5XU7EcteDIN5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22522},"main":"build/index.js","types":"build/index.d.ts","gitHead":"1521da0153268c7d1f605706bf6389496309908f","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"},"repository":{"url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","directories":{},"_nodeVersion":"20.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/browser-fingerprinting_1.0.5_1749773425530_0.5136351610294765","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ahmedelsharkawycs/browser-fingerprinting","version":"1.0.6","description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","main":"build/index.js","types":"build/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build","npm:publish":"npm run build && npm publish --access public"},"keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","webgl","device-detection","privacy","security","typescript"],"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git"},"homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"devDependencies":{"typescript":"^5.0.0"},"_id":"@ahmedelsharkawycs/browser-fingerprinting@1.0.6","gitHead":"f4a39dc2422d43126004a562030134d3db901963","_nodeVersion":"20.11.1","_npmVersion":"11.2.0","dist":{"integrity":"sha512-8yhCikK34DbdeezqGt30CYA/xHb2OzYp4IBZ0Zo6PKksOfYI299CLaxVOWJz6kqBG/TVpX9U+FQxLb/PbLnELg==","shasum":"24d45d51aa6709b37582c7c63c2a57b22c693f16","tarball":"https://registry.npmjs.org/@ahmedelsharkawycs/browser-fingerprinting/-/browser-fingerprinting-1.0.6.tgz","fileCount":9,"unpackedSize":23325,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+nPhvsqWyvY4kdJ+B+qkbD+95mrJ6ebRkhceimJP6iwIhAPqfSNHfEBi/F6+/Dh32fJbMh8vc34Im8aw18LZ1cz8L"}]},"_npmUser":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com","actor":{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-fingerprinting_1.0.6_1751903310517_0.809950771679059"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-08T12:22:51.376Z","modified":"2025-07-07T15:48:30.998Z","1.0.0":"2025-06-08T12:22:51.688Z","1.0.1":"2025-06-09T23:24:47.300Z","1.0.2":"2025-06-09T23:32:06.107Z","1.0.3":"2025-06-09T23:42:18.453Z","1.0.4":"2025-06-10T00:00:21.843Z","1.0.5":"2025-06-13T00:10:25.734Z","1.0.6":"2025-07-07T15:48:30.843Z"},"bugs":{"url":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues"},"author":{"name":"Ahmed Sharkawy","email":"ahmed.sharkawy.sde@gmail.com"},"license":"MIT","homepage":"https://github.com/AhmedElsharkawyCS/browser-fingerprinting#readme","keywords":["browser-fingerprinting","fingerprint","user-identification","fraud-prevention","analytics","tracking","canvas-fingerprinting","webgl","device-detection","privacy","security","typescript"],"repository":{"type":"git","url":"git+https://github.com/AhmedElsharkawyCS/browser-fingerprinting.git"},"description":"A powerful, privacy-focused browser fingerprinting library that generates unique identifiers based on browser and device characteristics. Perfect for fraud prevention, analytics, and user identification without cookies.","maintainers":[{"name":"ahmedelsharkawycs","email":"ahmed.sharkawy.sde@gmail.com"}],"readme":"# Browser Fingerprinting Library\n\n[![npm version](https://badge.fury.io/js/%40ahmedelsharkawycs%2Fbrowser-fingerprinting.svg)](https://badge.fury.io/js/%40ahmedelsharkawycs%2Fbrowser-fingerprinting)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/)\n\nA powerful, privacy-focused browser fingerprinting library that generates unique\nidentifiers based on browser and device characteristics. Perfect for fraud\nprevention, analytics, and user identification without cookies.\n\n## Features\n\n- **Comprehensive Data Collection**: Gathers 15+ unique browser and device attributes\n- **Privacy-Focused**: No external dependencies or data transmission\n- **High Performance**: Optimized async operations with minimal impact\n- **Canvas Fingerprinting**: Advanced canvas-based fingerprinting technique\n- **Cross-Browser Support**: Works on all modern browsers\n- **Device Detection**: Mobile, tablet, and desktop identification\n- **TypeScript Support**: Full type safety and IntelliSense\n- **Flexible Output**: Base64, SHA-256 hash, or raw data formats\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [API Reference](#api-reference)\n- [Data Collected](#data-collected)\n- [Advanced Usage](#advanced-usage)\n- [Use Cases](#use-cases)\n- [Browser Support](#browser-support)\n- [Privacy & Ethics](#privacy--ethics)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Installation\n\n```bash\nnpm install @ahmedelsharkawycs/browser-fingerprinting\n```\n\n```bash\nyarn add @ahmedelsharkawycs/browser-fingerprinting\n```\n\n```bash\npnpm add @ahmedelsharkawycs/browser-fingerprinting\n```\n\n## Quick Start\n\n### JavaScript (ES6+)\n\n```javascript\nimport {\n  getBrowserFingerprint,\n  normalizeFingerprint,\n  getFingerprintBase64,\n  getFingerprintHashAsync\n} from \"@ahmedelsharkawycs/browser-fingerprinting\"\n\n// Get complete browser fingerprint\nconst fingerprint = getBrowserFingerprint()\nconsole.log(\"Full fingerprint:\", fingerprint)\n\n// Get normalized fingerprint for ID generation\nconst normalized = normalizeFingerprint(fingerprint)\nconsole.log(\"Normalized:\", normalized)\n\n// Generate Base64 ID\nconst base64Id = getFingerprintBase64(normalized)\nconsole.log(\"Base64 ID:\", base64Id)\n\n// Generate SHA-256 hash ID\nconst hashId = await getFingerprintHashAsync(normalized)\nconsole.log(\"Hash ID:\", hashId)\n```\n\n### TypeScript\n\n```typescript\nimport {\n  getBrowserFingerprint,\n  normalizeFingerprint,\n  getFingerprintBase64,\n  getFingerprintHashAsync,\n  type BrowserFingerprint,\n  type NormalizedBrowserFingerprint\n} from \"@ahmedelsharkawycs/browser-fingerprinting\"\n\nasync function generateFingerprint(): Promise<string> {\n  // Get complete fingerprint with full type safety\n  const fingerprint: BrowserFingerprint = getBrowserFingerprint()\n\n  // Normalize for consistent ID generation\n  const normalized: NormalizedBrowserFingerprint = normalizeFingerprint(fingerprint)\n\n  // Generate a unique hash-based ID\n  const uniqueId: string = await getFingerprintHashAsync(normalized)\n\n  return uniqueId\n}\n```\n\n## API Reference\n\n### Core Functions\n\n#### getBrowserFingerprint(): BrowserFingerprint\n\nCollects comprehensive browser and device information.\n\n**Returns:** Complete fingerprint object with all available data points.\n\n#### normalizeFingerprint(fingerprint: BrowserFingerprint): NormalizedBrowserFingerprint\n\nNormalizes fingerprint data for consistent ID generation across sessions.\n\n**Parameters:**\n\n- `fingerprint`: The complete browser fingerprint\n\n**Returns:** Normalized fingerprint with stable attributes only.\n\n#### getFingerprintBase64(fingerprint: NormalizedBrowserFingerprint): string\n\nGenerates a Base64-encoded unique identifier.\n\n**Parameters:**\n\n- `fingerprint`: Normalized fingerprint data\n- `isNormalized`: Whether the input is already normalized (default: true)\n\n**Returns:** URL-safe Base64 encoded ID.\n\n#### getFingerprintHashAsync(fingerprint: NormalizedBrowserFingerprint): Promise<string>\n\nGenerates a SHA-256 hash-based unique identifier.\n\n**Parameters:**\n\n- `fingerprint`: Normalized fingerprint data\n- `isNormalized`: Whether the input is already normalized (default: true)\n\n**Returns:** Hexadecimal SHA-256 hash string.\n\n## Data Collected\n\n### Browser Information\n\n- **User Agent**: Browser and OS identification\n- **Platform**: Operating system details\n- **Vendor**: Browser vendor information\n- **Language**: Primary and available languages\n- **Plugins**: Installed browser plugins\n- **MIME Types**: Supported media types\n\n### Hardware & Performance\n\n- **Screen Resolution**: Display dimensions and pixel density\n- **Hardware Concurrency**: CPU core count\n- **Device Memory**: Available RAM (if supported)\n- **Touch Support**: Touch capabilities and max touch points\n- **Performance Metrics**: Timing benchmarks\n\n### Graphics & Media\n\n- **Canvas Fingerprint**: Rendered canvas signature\n- **WebGL Information**: Graphics card vendor and renderer\n- **Font Detection**: Available system fonts\n\n### Network & Storage\n\n- **Network Information**: Connection type and speed\n- **Storage Support**: Local/session storage and IndexedDB\n- **Local IP Addresses**: WebRTC-based IP detection\n- **Timezone**: User's timezone setting\n\n### Browser Quirks Detection\n\n- **Browser Type**: Chrome, Firefox, Safari, Edge, etc.\n- **Device Type**: Mobile, tablet, or desktop\n- **Operating System**: Windows, macOS, Linux, etc.\n\n## Advanced Usage\n\n### Custom Fingerprint Processing\n\n```typescript\nimport { getBrowserFingerprint, normalizeFingerprint, getFingerprintHashAsync } from \"@ahmedelsharkawycs/browser-fingerprinting\"\n\nasync function createCustomFingerprint() {\n  const fingerprint = getBrowserFingerprint()\n\n  // Custom processing for specific use cases\n  const customData = {\n    id: await getFingerprintHashAsync(normalizeFingerprint(fingerprint)),\n    deviceType: fingerprint.quirks.mobile ? \"mobile\" : fingerprint.quirks.tablet ? \"tablet\" : \"desktop\",\n    browserFamily: fingerprint.quirks.chrome ? \"Chrome\" : fingerprint.quirks.firefox ? \"Firefox\" : fingerprint.quirks.safari ? \"Safari\" : \"Other\",\n    screenSignature: `${fingerprint.screen.width}x${fingerprint.screen.height}@${fingerprint.screen.devicePixelRatio}x`,\n    hasWebGL: fingerprint.webgl.vendor !== \"unknown\",\n    timestamp: fingerprint.currentTimestamp\n  }\n\n  return customData\n}\n```\n\n### Fingerprint Comparison\n\n```typescript\nasync function compareFingerprints() {\n  const fp1 = getBrowserFingerprint()\n  const fp2 = getBrowserFingerprint() // Later session\n\n  const id1 = await getFingerprintHashAsync(normalizeFingerprint(fp1))\n  const id2 = await getFingerprintHashAsync(normalizeFingerprint(fp2))\n\n  return id1 === id2 // Same user/device\n}\n```\n\n## Use Cases\n\n### Fraud Prevention\n\n```typescript\nasync function detectSuspiciousActivity(userFingerprint: string) {\n  const currentFingerprint = await getFingerprintHashAsync(normalizeFingerprint(getBrowserFingerprint()))\n\n  return userFingerprint !== currentFingerprint\n}\n```\n\n### Analytics & Tracking\n\n```typescript\nasync function trackUniqueVisitors() {\n  const fingerprint = getBrowserFingerprint()\n  const visitorId = getFingerprintBase64(normalizeFingerprint(fingerprint))\n\n  // Send to analytics without personal data\n  analytics.track(\"page_view\", { visitor_id: visitorId })\n}\n```\n\n### Session Management\n\n```typescript\nasync function validateSession(storedFingerprintId: string) {\n  const currentId = await getFingerprintHashAsync(normalizeFingerprint(getBrowserFingerprint()))\n\n  if (currentId !== storedFingerprintId) {\n    // Potential session hijacking\n    return false\n  }\n  return true\n}\n```\n\n## Browser Support\n\n| Browser | Version | Notes          |\n| ------- | ------- | -------------- |\n| Chrome  | 60+     | Full support   |\n| Firefox | 55+     | Full support   |\n| Safari  | 12+     | Limited WebRTC |\n| Edge    | 79+     | Full support   |\n| Opera   | 47+     | Full support   |\n\n**Note**: Some features may have limited availability on older browsers or privacy-focused configurations.\n\n## Privacy & Ethics\n\nThis library is designed for legitimate use cases such as:\n\n- Fraud prevention and security\n- Analytics and user experience improvement\n- A/B testing and personalization\n- Bot detection and spam prevention\n\n### Ethical Guidelines\n\n- Always inform users about data collection\n- Provide opt-out mechanisms where required\n- Comply with privacy regulations (GDPR, CCPA, etc.)\n- Don't use for malicious tracking or profiling\n- Respect user privacy settings and preferences\n\n## Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/AhmedElsharkawyCS/browser-fingerprinting\ncd browser-fingerprinting\nnpm install\nnpm run build\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support & Contact\n\n- **Email**: <ahmed.sharkawy.sde@gmail.com>\n- **Issues**: [GitHub Issues](https://github.com/AhmedElsharkawyCS/browser-fingerprinting/issues)\n- **Feature Requests**: [GitHub Discussions](https://github.com/AhmedElsharkawyCS/browser-fingerprinting/discussions)\n\n---\n\n**Made with ❤️ by Ahmed Sharkawy**\n\n[⭐ Star this repo](https://github.com/AhmedElsharkawyCS/browser-fingerprinting) if you find it useful!\n","readmeFilename":"README.md"}