Sfoglia il codice sorgente

feature:增加根据cookie封锁用户高频率触发,支持自定义配置项

luoy 1 mese fa
parent
commit
2ad91db8dd
1 ha cambiato i file con 30 aggiunte e 1 eliminazioni
  1. 30 1
      buriedPiont.js

+ 30 - 1
buriedPiont.js

@@ -4,13 +4,42 @@ class Tracker {
     this.timer = null;
     this.startTime = 0;
     this.heartbeatInterval = options.heartbeatInterval || 30000; // 默认30秒发送一次心跳
+    this.visitCookieTimeout = options.visitCookieTimeout || 1; // 默认访问次数cookie有效期1分钟
+    this.maxVisitCount = options.maxVisitCount || 5; // 默认最大访问次数5次
+    this.blockCookieTimeout = options.blockCookieTimeout || 180; // 默认封锁cookie有效期180分钟
   }
 
-  init() {
+init() {
+  const visitCookieName = 'userVisitCount372';
+  const blockCookieName = 'userBlocked372';
+  const isBlocked = getCookie(blockCookieName);
+  const doneFN = () => {
     this.startTime = Date.now();
     this.bindEvents();
     this.startHeartbeat();
   }
+  if (isBlocked) {
+    // restoreBlock();
+    return;
+  }
+
+  let visitCount = getCookie(visitCookieName);
+  if (visitCount) {
+    visitCount = parseInt(visitCount, 10);
+    if (visitCount >= this.maxVisitCount) {
+      setCookie(blockCookieName, 'true', this.blockCookieTimeout); // 封锁用户 180 分钟
+      deleteCookie(visitCookieName);
+      // restoreBlock();
+    } else {
+      visitCount += 1;
+      setCookie(visitCookieName, visitCount, this.visitCookieTimeout); // 每次访问 +1,有效期 1 分钟
+      doneFN();
+    }
+  } else {
+    setCookie(visitCookieName, '1', this.visitCookieTimeout); // 首次访问,设置访问次数为 1
+    doneFN();
+  }
+}
 
   bindEvents() {
     window.addEventListener('beforeunload', this.handleBeforeUnload);