最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

禁止別人調(diào)試前端代碼的幾種常見方法

 更新時間:2025年01月20日 08:31:44   作者:C+?安口木  
這篇文章主要介紹了介紹了多種避免他人調(diào)試前端代碼的方法,包括通過不斷使用debugger語句、將代碼寫在一行、檢測瀏覽器窗口尺寸變化、使用定時器執(zhí)行debugger語句、使用第三方插件disable-devtooldisable-devtool、禁止F12/審查開啟控制臺等,需要的朋友可以參考下

前言

作為web開發(fā)者,我們應該都有這樣一個認識:前端代碼是公開的,所有人都能拿到我們代碼,不能把秘鑰等信息寫死在前端。為了避免他人輕易看懂前端代碼,通常我們會對代碼進行壓縮、混淆等處理。今天帶來一篇文章,作者介紹了幾種避免他人調(diào)試前端代碼的常見方式,感興趣的同學可以在自己項目里試試。
下面是正文部分。

這里我們不介紹禁止右鍵菜單禁止F12快捷鍵代碼混淆方案。

無限debugger

  • 前端頁面防止調(diào)試的方法主要是通過不斷 debugger 來瘋狂輸出斷點,因為 debugger 在控制臺被打開的時候就會執(zhí)行

  • 由于程序被 debugger 阻止,所以無法進行斷點調(diào)試,所以網(wǎng)頁的請求也是看不到的.

基礎方案

(() => {
  function ban() {
    setInterval(() => { debugger; }, 50);
  }
  try {
    ban();
  } catch (err) { }
})();
  • 將 setInterval 中的代碼寫在一行,可以禁止用戶斷點,即使添加 logpoint 為 false 也無用

  • 當然即使有些人想到用左下角的格式化代碼,將其變成多行也是沒用的

瀏覽器寬高

根據(jù)瀏覽器寬高、與打開F12后的寬高進行比對,有差值,說明打開了調(diào)試,則替換html內(nèi)容;

  • 通過檢測窗口的外部高度和寬度與內(nèi)部高度和寬度的差值,如果差值大于 200,就將頁面內(nèi)容設置為 “檢測到非法調(diào)試”。

  • 通過使用間隔為 50 毫秒的定時器,在每次間隔內(nèi)執(zhí)行一個函數(shù),該函數(shù)通過創(chuàng)建一個包含 debugger 語句的函數(shù),并立即調(diào)用該函數(shù)的方式來試圖阻止調(diào)試器的正常使用。

(() => {
  function block() {
    if (window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200) {
      document.body.innerHTML = "檢測到非法調(diào)試";
    }
    setInterval(() => {
      (function () {
        return false;
      }
      ['constructor']('debugger')
      ['call']());
    }, 50);
  }
  try {
    block();
  } catch (err) { }
})();

關閉斷點,調(diào)整空頁面

在不打開發(fā)者工具的情況下,debugger是不會執(zhí)行將頁面卡住,而恰恰是利用debugger的這一點,如果你打開開發(fā)者工具一定會被debugger卡住,那么上下文時間間隔就會增加,在對時間間隔進行判斷,就能巧妙的知道絕對開了開發(fā)者工具,隨后直接跳轉(zhuǎn)到空白頁,一氣呵成。

setInterval(function () {
  var startTime = performance.now();
  // 設置斷點
  debugger;
  var endTime = performance.now();
  // 設置一個閾值,例如100毫秒
  if (endTime - startTime > 100) {
    window.location.href = 'about:blank';
  }
}, 100);

第三方插件

disable-devtool

disable-devtool可以禁用所有一切可以進入開發(fā)者工具的方法,防止通過開發(fā)者工具進行的代碼搬運。

該庫有以下特性:

  • 支持可配置是否禁用右鍵菜單

  • 禁用 f12 和 ctrl+shift+i 等快捷鍵

  • 支持識別從瀏覽器菜單欄打開開發(fā)者工具并關閉當前頁面

  • 開發(fā)者可以繞過禁用 (url參數(shù)使用tk配合md5加密)

  • 多種監(jiān)測模式,支持幾乎所有瀏覽器(IE,360,qq瀏覽器,FireFox,Chrome,Edge…)

  • 高度可配置、使用極簡、體積小巧

  • 支持npm引用和script標簽引用(屬性配置)

  • 識別真移動端與瀏覽器開發(fā)者工具設置插件偽造的移動端,為移動端節(jié)省性能

  • 支持識別開發(fā)者工具關閉事件

  • 支持可配置是否禁用選擇、復制、剪切、粘貼功能

  • 支持識別 eruda 和 vconsole 調(diào)試工具

  • 支持掛起和恢復探測器工作

  • 支持配置ignore屬性,用以自定義控制是否啟用探測器

  • 支持配置iframe中所有父頁面的開發(fā)者工具禁用

使用:

<script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool'></script>

更多使用方法參見官網(wǎng):disable-devtool

disable-devtool

console-ban禁止 F12 / 審查開啟控制臺,保護站點資源、減少爬蟲和攻擊的輕量方案,支持重定向、重寫、自定義多種策略。

<head>
  <!-- ... -->
  <script src="https://cdn.jsdelivr.net/npm/console-ban@5.0.0/dist/console-ban.min.js"></script>
  <script>
    // default options
    ConsoleBan.init()
    // custom options
    ConsoleBan.init({
      redirect: '/404'
    })
  </script>
</head>

在項目中使用:

 yarn add console-ban
import { init } from 'console-ban'

init(options)

重定向

ConsoleBan.init({
  // 重定向至 /404 相對地址
  redirect: '/404',
  // 重定向至絕對地址
  redirect: 'http://domain.com/path'
})

使用重定向策略可以將用戶指引到友好的相關信息地址(如網(wǎng)站介紹),亦或是純靜態(tài) 404 頁面,高防的邊緣計算或驗證碼等頁面。

注:若重定向后的地址可以通過 SPA 路由切換或 pjax 局部加載技術等進行非真正意義上的頁面切換,則切換后的控制臺監(jiān)測將不會再次生效,對于 SPA 你可以在路由衛(wèi)士處重新注冊本實例,其他情況請引導至真正的其他頁面。

重寫

var div = document.createElement('div')
div.innerHTML = '不要偷看啦~'

ConsoleBan.init({
  // 重寫 body 為字符串
  write: '<h1> 不要偷看啦~ </h1>',
  // 可傳入節(jié)點對象
  write: div
})

重寫策略可以完全阻斷對網(wǎng)站內(nèi)容的審查,但較不友好,不推薦使用。

回調(diào)函數(shù)

ConsoleBan.init({
  callback: () => {
    // ...
  }
})

回調(diào)函數(shù)支持自定義打開控制臺后的策略。

總結(jié) 

到此這篇關于禁止別人調(diào)試前端代碼的幾種常見方法的文章就介紹到這了,更多相關禁止調(diào)試前端代碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

虹口区| 泾源县| 岢岚县| 芜湖市| 陵川县| 中山市| 镇雄县| 裕民县| 祁东县| 霞浦县| 七台河市| 修武县| 固阳县| 思茅市| 柏乡县| 十堰市| 永兴县| 桂平市| 唐海县| 沈阳市| 浮梁县| 霍山县| 隆安县| 阳春市| 商水县| 崇明县| 漠河县| 吉水县| 长顺县| 福清市| 德清县| 南京市| 明星| 兴安盟| 星座| 九龙县| 象州县| 新密市| 南阳市| 武义县| 南充市|