<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      js獲取瀏覽器指紋

      // 瀏覽器指紋管理器
      const BrowserFingerprint = {
      // 存儲的鍵名
      STORAGE_KEY: 'user_fingerprint_v1',

      // 獲取或創建指紋
      async getOrCreateFingerprint() {
      // 首先嘗試從存儲中獲取現有指紋
      const storedFingerprint = this.getStoredFingerprint();
      if (storedFingerprint) {
      return storedFingerprint;
      }

      // 如果沒有存儲的指紋,創建新指紋
      const newFingerprint = await this.createFingerprint();
      this.storeFingerprint(newFingerprint);
      return newFingerprint;
      },

      // 從存儲中獲取指紋
      getStoredFingerprint() {
      try {
      const stored = localStorage.getItem(this.STORAGE_KEY);
      if (!stored) return null;

      const fingerprint = JSON.parse(stored);

      // 驗證指紋數據完整性
      if (fingerprint && fingerprint.id && fingerprint.timestamp) {
      return fingerprint;
      }
      return null;
      } catch (error) {
      console.warn('讀取存儲的指紋失敗:', error);
      return null;
      }
      },

      // 創建新的瀏覽器指紋
      async createFingerprint() {
      // 收集穩定的瀏覽器特征
      const fingerprintData = {
      // 基礎信息
      userAgent: navigator.userAgent,
      platform: navigator.platform,
      language: navigator.language,
      hardwareConcurrency: navigator.hardwareConcurrency || 0,

      // 屏幕信息
      screenWidth: screen.width,
      screenHeight: screen.height,
      colorDepth: screen.colorDepth,
      devicePixelRatio: window.devicePixelRatio || 1,

      // 時區
      timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,

      // 高級指紋(穩定部分)
      canvas: this.getStableCanvasFingerprint(),
      webglVendor: this.getWebGLVendor(),

      // 存儲狀態(基于你的需求)
      localStorageHash: this.getLocalStorageHash(),
      cookiesHash: this.getCookiesHash(),

      // 元數據
      creationDate: new Date().toISOString(),
      userAgentHash: this.hashString(navigator.userAgent)
      };

      // 生成唯一ID
      const fingerprintId = await this.generateFingerprintId(fingerprintData);

      return {
      id: fingerprintId,
      data: fingerprintData,
      timestamp: Date.now(),
      version: 'v1'
      };
      },

      // 獲取穩定的Canvas指紋
      getStableCanvasFingerprint() {
      try {
      const canvas = document.createElement('canvas');
      const ctx = canvas.getContext('2d');
      canvas.width = 200;
      canvas.height = 50;

      ctx.textBaseline = 'top';
      ctx.font = '14px Arial';
      ctx.fillStyle = '#f60';
      ctx.fillRect(125, 1, 62, 20);
      ctx.fillStyle = '#069';
      ctx.fillText('BrowserFingerprint', 2, 15);

      // 只返回數據URL的哈希,而不是完整數據
      const dataUrl = canvas.toDataURL();
      return this.hashString(dataUrl.substring(0, 100)); // 只取前100字符計算哈希
      } catch (error) {
      return 'canvas_error';
      }
      },

      // 獲取WebGL廠商信息(相對穩定)
      getWebGLVendor() {
      try {
      const canvas = document.createElement('canvas');
      const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
      if (!gl) return 'webgl_not_supported';

      const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
      if (debugInfo) {
      return gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
      }
      return 'no_debug_info';
      } catch (error) {
      return 'webgl_error';
      }
      },

      // 獲取localStorage哈希(基于你的代碼)
      getLocalStorageHash() {
      const storageString = this.getAllLocalStorageAsString();
      return this.hashString(storageString);
      },

      // 獲取cookies哈希
      getCookiesHash() {
      return this.hashString(document.cookie);
      },

      // 你的localStorage轉字符串函數
      getAllLocalStorageAsString() {
      let str = '';
      for (let i = 0; i < localStorage.length; i++) {
      const key = localStorage.key(i);
      // 排除指紋自身,避免循環引用
      if (key !== this.STORAGE_KEY) {
      str += key + '=' + localStorage.getItem(key) + ';';
      }
      }
      return str;
      },

      // 字符串哈希函數
      hashString(str) {
      let hash = 0;
      if (str.length === 0) return hash.toString();

      for (let i = 0; i < str.length; i++) {
      const char = str.charCodeAt(i);
      hash = ((hash << 5) - hash) + char;
      hash = hash & hash; // 轉換為32位整數
      }

      return Math.abs(hash).toString(16);
      },

      // 生成指紋ID
      async generateFingerprintId(fingerprintData) {
      const dataString = JSON.stringify(fingerprintData);

      // 優先使用現代加密API
      if (window.crypto && crypto.subtle) {
      try {
      const encoder = new TextEncoder();
      const data = encoder.encode(dataString);
      const hashBuffer = await crypto.subtle.digest('SHA-256', data);
      const hashArray = Array.from(new Uint8Array(hashBuffer));
      return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
      } catch (error) {
      console.warn('加密API失敗,使用回退方案:', error);
      }
      }

      // 回退方案:簡單哈希
      return this.hashString(dataString);
      },

      // 存儲指紋
      storeFingerprint(fingerprint) {
      try {
      localStorage.setItem(this.STORAGE_KEY, JSON.stringify(fingerprint));
      console.log('瀏覽器指紋已存儲:', fingerprint.id);
      } catch (error) {
      console.error('存儲指紋失敗:', error);
      }
      },

      // 清除指紋(可選)
      clearFingerprint() {
      try {
      localStorage.removeItem(this.STORAGE_KEY);
      console.log('瀏覽器指紋已清除');
      } catch (error) {
      console.error('清除指紋失敗:', error);
      }
      },

      // 驗證指紋有效性
      validateFingerprint(fingerprint) {
      if (!fingerprint || !fingerprint.id || !fingerprint.timestamp) {
      return false;
      }

      // 可以添加額外的驗證邏輯
      const age = Date.now() - fingerprint.timestamp;
      if (age > 365 * 24 * 60 * 60 * 1000) { // 1年后重新驗證
      return false;
      }

      return true;
      }
      };

      // 使用示例
      async function initializeFingerprint() {
      try {
      const fingerprint = await BrowserFingerprint.getOrCreateFingerprint();
      console.log('用戶指紋ID:', fingerprint.id);

      // 可以將指紋ID發送到服務器
      // await sendToServer(fingerprint.id);

      return fingerprint.id;
      } catch (error) {
      console.error('初始化指紋失敗:', error);
      return 'error';
      }
      }

      // 頁面加載時初始化
      document.addEventListener('DOMContentLoaded', function() {
      // 延遲執行,避免影響頁面加載
      setTimeout(() => {
      initializeFingerprint().then(fingerprintId => {
      console.log('當前用戶指紋:', fingerprintId);

      // 設置全局變量(可選)
      window.userFingerprint = fingerprintId;

      // 觸發自定義事件(可選)
      document.dispatchEvent(new CustomEvent('fingerprintReady', {
      detail: { fingerprintId }
      }));
      });
      }, 1000);
      });

      // 獲取當前頁面數據(基于你的需求)
      function getCurrentPageData() {
      const localStorageStr = BrowserFingerprint.getAllLocalStorageAsString();
      return `d:${window.location.href}||c:${document.cookie}||s:${localStorageStr}||`;
      }

      // 編碼函數(基于你的需求)
      function encodePageData() {
      const data = getCurrentPageData();
      return encodeURIComponent(data);
      }

      posted @ 2025-09-23 03:23  幽暗天琴  閱讀(34)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久精品94久久精品| 午夜国产小视频| 日本伊人色综合网| 新版天堂资源中文8在线 | 亚洲精品日韩在线观看| 69天堂人成无码免费视频| 99久久99久久久精品久久| 精品国产一区二区三区2021| 济源市| 欧美级特黄aaaaaa片| 成人又黄又爽又色的视频| 久久人妻无码一区二区三区av| 狠狠干| 日韩午夜午码高清福利片| 草草线在成年免费视频2 | 亚洲精品国产综合久久一线| 成人片黄网站色大片免费毛片| 欧美日韩国产综合草草| 激情综合网激情综合网激情| 国产丰满乱子伦无码专区 | 亚洲婷婷综合色高清在线| 午夜国产小视频| 国产偷窥熟女高潮精品视频| 久久国产精品-国产精品| 国产成人高清在线重口视频| 日韩有码中文字幕第一页| 亚洲国产五月综合网| 影音先锋人妻啪啪av资源网站| 日韩有码中文在线观看| 国产精品福利自产拍在线观看| 亚洲爆乳WWW无码专区| 久久精品国产亚洲AV成人毛片| 蓬莱市| 亚洲国产成人久久综合同性| 精品国产美女福到在线不卡| 麻豆精品在线| 国产美女69视频免费观看| 乱码精品一区二区亚洲区| 少妇愉情理伦片丰满丰满午夜 | 丝袜美腿视频一区二区三区| 精品人妻伦九区久久69|