成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一行代碼禁止用戶調試前端代碼!

開發 開發工具
有時候不希望用戶去調試或復制前端代碼,那該如何禁止用戶調試前端代碼呢?今天就來分享一個開源的前端工具:Disable Devtool,一行代碼禁用 Web 開發者工具!

功能簡介

disable-devtool 可以禁用一切可以進入開發者工具的方法,阻止通過開發者工具進行的“代碼抓取”。

它具有以下特點:

  • 支持可配置是否禁用右鍵菜單。
  • 取消 f12 和 ctrl+shift+i 等快捷鍵。
  • 支持識別從瀏覽器菜單欄打開開發者工具并關閉當前頁面。
  • 開發者可以繞過拒絕(url參數使用tk配合md5加密)。
  • 多種監測模式,支持幾乎所有瀏覽器(IE,360,QQ瀏覽器,FireFox,Chrome,Edge...)。
  • 高度可配置、使用極簡、體積緊湊。
  • 支持npm引用和腳本標簽引用(屬性配置)。
  • 識別真移動端與瀏覽器開發者工具設置插件格式化的移動端,為移動端節省性能。
  • 支持識別開發者工具關閉事件。
  • 支持可配置是否取消選擇、復制、剪切、粘貼功能。
  • 支持識別eruda和vconsole調試工具。
  • 支持掛起和恢復支架工作。
  • 支持配置ignore屬性,默認自定義控制是否啟用。
  • 支持配置 iframe 中所有父頁面的開發者工具禁用。

基本使用

推薦使用 npm 進行安裝(使用script腳本會被代理單獨攔截掉從而無法執行),安裝 disable-devtool:

npm i disable-devtool

基本使用:

import DisableDevtool from 'disable-devtool';

DisableDevtool(options);

這里的 options 就是配置項。可配置參數如下:

interface IConfig {
    md5?: string; // 繞過禁用的md5值,詳情見3.2,默認不啟用繞過禁用
    url?: string; // 關閉頁面失敗時的跳轉頁面,默認值為localhost
    tkName?: string; // 繞過禁用時的url參數名稱,默認為 ddtk
    ondevtoolopen?(type: DetectorType, next: Function): void; // 開發者面板打開的回調,啟用時url參數無效,type 為監測模式,詳見3.5, next函數是關閉當前窗口
    ondevtoolclose?(): void; // 開發者面板關閉的回調
    interval?: number; // 定時器的時間間隔 默認200ms
    disableMenu?: boolean; // 是否禁用右鍵菜單 默認為true
    stopIntervalTime?: number; // 在移動端時取消監視的等待時長
    clearIntervalWhenDevOpenTrigger?: boolean; // 是否在觸發之后停止監控 默認為false, 在使用ondevtoolclose時該參數無效
    detectors?: Array<DetectorType>; // 啟用的檢測器 檢測器詳情見 3.5 默認為全部,建議使用全部
    clearLog?: boolean; // 是否每次都清除log
    disableSelect?: boolean; // 是否禁用選擇文本 默認為false
    disableCopy?: boolean; // 是否禁用復制 默認為false
    disableCut?: boolean; // 是否禁用剪切 默認為false
    disablePaste: boolean; // 是否禁用粘貼 默認為false
    ignore?: (string|RegExp)[] | null | (()=>boolean); // 某些情況忽略禁用
    disableIframeParents?: boolean; // iframe中是否禁用所有父窗口
    timeOutUrl?: // 關閉頁面超時跳轉的url;
}

DisableDevtool 的返回值類型如下:

interface IDDResult {
    success: boolean; // 表示是否正常啟用
    reason: string; // 未正常啟用的原因
}

Disable-Devtool 有以下監測模式,使用 detectors 定義:

enum DetectorType {
  Unknown = -1,
  RegToString = 0, // 根據正則檢測
  DefineId, // 根據dom id檢測
  Size, // 根據窗口尺寸檢測
  DateToString, // 根據Date.toString 檢測
  FuncToString, // 根據Function.toString 檢測
  Debugger, // 根據斷點檢測,僅在ios chrome 真機情況下有效
  Performance, // 根據log大數據性能檢測
  DebugLib, // 檢測第三方調試工具 eruda 和 vconsole   
};

ondevtoolopen 事件的回調參數就是被觸發的監測模式??梢栽?nbsp;ondevtoolopen 里執行業務邏輯,比如做數據上報、用戶行為分析等:

DisableDevtool({
    ondevtoolopen(type, next){
        alert('Devtool opened with type:' + type);
        next();
    }
});

那么問題來了,如果把 Devtools 禁用了,那如果線上應用出了問題,作為應用的開發者,也是無法調試的,怎么辦呢?該工具的作者當然想到了這一點,它使用 key 與 md5 配合的方式使開發者可以在線上繞過禁用。

使用流程:指定一個 key a(該值不要記錄在代碼中),使用 md5 加密得到一個值 b,將 b 作為 md5 參數傳入,開發者在訪問 url 的時候只需要帶上url參數 ?ddtk=a即可繞過禁用。

disableDevtool對象暴露了 md5 方法,可供開發者加密時使用:

DisableDevtool.md5('xxx');
責任編輯:姜華 來源: 前端充電寶
相關推薦

2016-12-02 08:53:18

Python一行代碼

2014-02-12 13:43:50

代碼并行任務

2022-04-09 09:11:33

Python

2017-04-05 11:10:23

Javascript代碼前端

2020-08-19 10:30:25

代碼Python多線程

2020-09-09 16:00:22

Linux進程

2021-11-02 16:25:41

Python代碼技巧

2021-08-31 09:49:37

CPU執行語言

2017-04-13 19:20:18

Python代碼并行任務

2020-09-28 12:34:38

Python代碼開發

2019-12-25 14:08:50

Pandas數據計算

2020-08-12 14:54:00

Python代碼開發

2022-04-10 23:43:11

代碼發送郵件后端

2017-11-20 14:46:27

命令代碼

2021-11-05 06:57:50

架構工具代碼

2020-01-10 22:56:56

Python圖像處理Linux

2025-02-12 09:55:01

Java代碼性能

2022-09-28 10:12:50

Python代碼可視化

2021-05-28 07:39:17

SQL代碼操作

2021-12-26 12:10:21

React組件前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久91 | 在线播放一区二区三区 | 一区二区三区欧美在线观看 | 久久精品黄色 | 亚洲一区亚洲二区 | 亚洲影视在线 | 亚洲 欧美 激情 另类 校园 | av中文在线 | 五月天国产 | 午夜精品一区二区三区免费视频 | 羞羞视频免费在线 | 国产精品综合一区二区 | 久久精品视频免费看 | 国产高清精品一区二区三区 | 久久在线 | 亚洲视频欧美视频 | 欧美视频区 | 欧美成人aaa级毛片在线视频 | 国产不卡在线播放 | 欧美专区在线视频 | 国产乱码精品一区二区三区五月婷 | 一级毛片在线播放 | 日本在线视频一区二区 | 午夜av电影| 日韩精品一二三 | 在线中文一区 | 国产精品久久一区二区三区 | a在线观看 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 青久草视频 | 亚洲国产一区在线 | julia中文字幕久久一区二区 | 91精品国产综合久久久久久漫画 | 亚洲三区在线观看 | 精品久久久久久亚洲综合网 | 91久久国产综合久久 | 欧美一级网站 | 国产精品伦理一区 | 久久久久www | 自拍偷拍中文字幕 | 亚洲一区二区久久 |