解除网页禁止复制、剪切、选择文本、右键菜单等限制

网页限制解除代码(油猴插件) 通杀大部分网站,可以解除禁止复制剪切选择文本右键菜单限制 【代码】网页限制解除代码(油猴插件) 阅读详情

浏览器安装暴力猴扩展即可使用

// ==UserScript==
// @namespace         https://www.github.com/Cat7373/

// @name              网页限制解除
// @name:en           Remove web limits
// @name:zh           网页限制解除
// @name:zh-CN        网页限制解除
// @name:zh-TW        網頁限制解除
// @name:ja           ウェブの規制緩和

// @description       通杀大部分网站,可以解除禁止复制、剪切、选择文本、右键菜单的限制。
// @description:en    Pass to kill most of the site, you can lift the restrictions prohibited to copy, cut, select the text, right-click menu.
// @description:zh    通杀大部分网站,可以解除禁止复制、剪切、选择文本、右键菜单的限制。
// @description:zh-CN 通杀大部分网站,可以解除禁止复制、剪切、选择文本、右键菜单的限制。
// @description:zh-TW 通殺大部分網站,可以解除禁止復制、剪切、選擇文本、右鍵菜單的限制。
// @description:ja    サイトのほとんどを殺すために渡し、あなたは、コピー切り取り、テキスト、右クリックメニューを選択することは禁止の制限を解除することができます。

// @homepageURL       https://cat7373.github.io/remove-web-limits/
// @supportURL        https://github.com/Cat7373/remove-web-limits/issues/

// @author            Cat73
// @version           1.3
// @license           LGPLv3

// @compatible        chrome Chrome_46.0.2490.86   TamperMonkey   脚本_1.3 测试通过
// @compatible        firefox Firefox_42.0   GreaseMonkey   脚本_1.2.1 测试通过
// @compatible        opera Opera_33.0.1990.115   TamperMonkey   脚本_1.1.3 测试通过
// @compatible        safari 未测试

// @match             *://*/*
// @grant             none
// @run-at            document-start
// ==/UserScript==
(function() {
  'use strict';

  // 域名规则列表
  var rules = {
    black_rule: {
      name: "black",
      hook_eventNames: "",
      unhook_eventNames: ""
    },
    default_rule: {
      name: "default",
      hook_eventNames: "contextmenu|select|selectstart|copy|cut|dragstart",
      unhook_eventNames: "mousedown|mouseup|keydown|keyup",
      dom0: true,
      hook_addEventListener: true,
      hook_preventDefault: true,
      hook_set_returnValue: true,
      add_css: true
    }
  };
  // 域名列表
  var lists = {
    // 黑名单
    black_list: [
      /.*\.youtube\.com.*/,
      /.*\.wikipedia\.org.*/,
      /mail\.qq\.com.*/,
      /translate\.google\..*/
    ]
  };

  // 要处理的 event 列表
  var hook_eventNames, unhook_eventNames, eventNames;
  // 储存名称
  var storageName = getRandStr('qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM', parseInt(Math.random() * 12   8));
  // 储存被 Hook 的函数
  var EventTarget_addEventListener = EventTarget.prototype.addEventListener;
  var document_addEventListener = document.addEventListener;
  var Event_preventDefault = Event.prototype.preventDefault;

  // Hook addEventListener proc
  function addEventListener(type, func, useCapture) {
    var _addEventListener = this === document ? document_addEventListener : EventTarget_addEventListener;
    if(hook_eventNames.indexOf(type) >= 0) {
      _addEventListener.apply(this, [type, returnTrue, useCapture]);
    } else if(unhook_eventNames.indexOf(type) >= 0) {
      var funcsName = storageName   type   (useCapture ? 't' : 'f');

      if(this[funcsName] === undefined) {
        this[funcsName] = [];
        _addEventListener.apply(this, [type, useCapture ? unhook_t : unhook_f, useCapture]);
      }

      this[funcsName].push(func);
    } else {
      _addEventListener.apply(this, arguments);
    }
  }

  // 清理循环
  function clearLoop() {
    var elements = getElements();

    for(var i in elements) {
      for(var j in eventNames) {
        var name = 'on'   eventNames[j];
        if(elements[i][name] !== null && elements[i][name] !== onxxx) {
          if(unhook_eventNames.indexOf(eventNames[j]) >= 0) {
            elements[i][storageName   name] = elements[i][name];
            elements[i][name] = onxxx;
          } else {
            elements[i][name] = null;
          }
        }
      }
    }
  }

  // 返回true的函数
  function returnTrue(e) {
    return true;
  }
  function unhook_t(e) {
    return unhook(e, this, storageName   e.type   't');
  }
  function unhook_f(e) {
    return unhook(e, this, storageName   e.type   'f');
  }
  function unhook(e, self, funcsName) {
    var list = self[funcsName];
    for(var i in list) {
      list[i](e);
    }

    e.returnValue = true;
    return true;
  }
  function onxxx(e) {
    var name = storageName   'on'   e.type;
    this[name](e);

    e.returnValue = true;
    return true;
  }

  // 获取随机字符串
  function getRandStr(chs, len) {
    var str = '';

    while(len--) {
      str  = chs[parseInt(Math.random() * chs.length)];
    }

    return str;
  }

  // 获取所有元素 包括document
  function getElements() {
    var elements = Array.prototype.slice.call(document.getElementsByTagName('*'));
    elements.push(document);

    return elements;
  }

  // 添加css
  function addStyle(css) {
    var style = document.createElement('style');
    style.innerHTML = css;
    document.head.appendChild(style);
  }

  // 获取目标域名应该使用的规则
  function getRule(url) {
    function testUrl(list, url) {
      for(var i in list) {
        if(list[i].test(url)) {
          return true;
        }
      }

      return false;
    }

    if(testUrl(lists.black_list, url)) {
      return rules.black_rule;
    }

    return rules.default_rule;
  }

  // 初始化
  function init() {
    // 获取当前域名的规则
    var url = window.location.host   window.location.pathname;
    var rule = getRule(url);

    // 设置 event 列表
    hook_eventNames = rule.hook_eventNames.split("|");
    // TODO Allowed to return value
    unhook_eventNames = rule.unhook_eventNames.split("|");
    eventNames = hook_eventNames.concat(unhook_eventNames);

    // 调用清理 DOM0 event 方法的循环
    if(rule.dom0) {
      setInterval(clearLoop, 30 * 1000);
      setTimeout(clearLoop, 2500);
      window.addEventListener('load', clearLoop, true);
      clearLoop();
    }

    // hook addEventListener
    if(rule.hook_addEventListener) {
      EventTarget.prototype.addEventListener = addEventListener;
      document.addEventListener = addEventListener;
    }

    // hook preventDefault
    if(rule.hook_preventDefault) {
      Event.prototype.preventDefault = function() {
        if(eventNames.indexOf(this.type) < 0) {
          Event_preventDefault.apply(this, arguments);
        }
      };
    }

    // Hook set returnValue
    if(rule.hook_set_returnValue) {
      Event.prototype.__defineSetter__('returnValue', function() {
        if(this.returnValue !== true && eventNames.indexOf(this.type) >= 0) {
          this.returnValue = true;
        }
      });
    }

    console.debug('url: '   url, 'storageName:'   storageName, 'rule: '   rule.name);

    // 添加CSS
    if(rule.add_css) {
      addStyle('html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}');
    }
  }

  init();
})();
  

更多专业前端知识,请上【猿2048】www.mk2048.com
网页限制解除全攻略:从油猴插件到自定义脚本(避坑指南) 本文深入解析网页限制复制选择右键菜单的技术原理,提供从浏览器开发者工具、油猴插件到编写自定义脚本的完整解决方案。文章重点剖析了JavaScript事件监听与CSS user-select属性,并给出安全、高效的脚本编写指南与避坑建议,帮助用户合法合规地提升信息获取效率。 阅读详情

相关推荐

关于浏览器扩展脚本:remove-web-limits(网页限制解除)

本文介绍浏览器扩展脚本:remove-web-limits(网页限制解除)实现的功能和安装步骤,还会详细分析脚本的代码,让你对实现原理一目了然。 此脚本通杀大部分网站,可以解除禁止复制剪切选择文本右键菜单限制脚本基本不影响网页正常功能,如果影响了任何功能,可以暂时禁用脚本解决。脚本已有10年的历史,原作者已经暂停维护 。

安德洛夫 623

Remove-web-limits-:通杀大部分网站,可以解除禁止复制剪切选择文本右键菜单限制。原作者cat73,因为和搜索跳转脚本冲突,遂进行了改动

Remove-web-limits- 网页限制解除 在线安装 可以解除禁止复制剪切选择文本右键菜单限制, 通杀大部分网站. 安装后会在网页右上角出现一个半透明的小方框,虽然脚本已经内置了部分网站,但是如果您浏览的网站无法生效,可以将鼠标滑动至此,点击选框即可对该网站生效。 无效的情况下可以在此反馈 原作者 , 已停止维护,其相关链接 , ,因为和 有 ,遂进行了改动。 因为原作者因工作关系已停止维护,所以如果反馈的话,务必在我的 或者 下进行反馈,并提供相关网址。 如果是感谢的话可以去 感谢。 相关说明 某些页面原作者的脚本可以而我的不行,所以当出现这种情况的时候可以尝试下原作者的。 flash页面上的文字无法复制 链接上的文字可以通过按住alt键进行选择复制 如果对视频网站使用,会使视频拖动条无法使用。 请在复制完成后关掉对视频网站的规则使用。 更新历史 v4.

脚本代码:网页限制解除(改)

将下面代码复制浏览器插件-暴力猴中。

安德洛夫 927

解除网页复制限制的几种方法

复制文字

weixin_44070283的博客 5797

解除网页文本禁止复制限制方法

首先确保浏览器已经安装有脚本管理扩展,比如 Tampermonkey、Violentmonkey。使用方法也很简单,在有复制限制或者右键限制的网站上,点击扩展图标,开启功能就行了。这个可以说是最终的、一定能行的方法了。最简单也是最省事的方法,直接安装解除复制限制的扩展完事儿。推荐使用白描网页版,免费够用,也不需要再安装额外的软件了。找到的资料如果需要一个个字手打,效率实在太低。然后进入脚本地址,点击安装即可。

阿福聊编程 5983

脚本代码:网页限制解除(remove-web-limits)

原版描述:通杀大部分网站,可以解除禁止复制剪切选择文本右键菜单限制。remove-web-limits(网页限制解除)

安德洛夫 381

彻底解决一切网页禁止复制的方法

一,下载安装暴力猴插件,这个自己去搜索下载安装,以谷歌浏览器为例,打开扩展工具,勾选开发者选项。把插件拖到里面安装即可。自动启用。如果没有启用还要勾选启用。 二,点击暴力猴插件上的选项标签,如图。点击上面的 + 号,在点新建。把下面的代码粘贴到里面保存。 三,复制代码 // ==UserScript== // @namespace ...

BUG制造者:图图 <p>这是一个P标签</p> 6066

解除网页操作限制解除右键文字选择复制剪切粘贴F12等

解除网页操作限制解除右键复制等。

weixin_38817047的博客 1185

解除网站禁用右键 解除禁用选择方法 并允许复制

限制复制,太恶心了,别用技术作恶!!!

chenhao0568的专栏 8472

解除智慧树网页各种限制选中复制,粘贴等)

解除智慧树网页各种限制选中复制,粘贴等)

weixin_58503231的博客 8121

js-禁止右键菜单代码、禁止复制粘贴代码

< script type = "text/javascript" > //屏蔽右键菜单 document.oncontextmenu = function(event) { if (window.event) { event = window.event; } try { var the = event.srcElement; if (! ((the.tagName == "INPUT" && the.type.toLowerCase() =

喜欢前端的后端 MelodyJerry 589

网页文字内容不能复制怎么办?怎么解除网站禁止复制?为什么很多平台禁止转载的内容不能复制

网页文字内容不能复制怎么办?怎么解除网站禁止复制?为什么很多平台禁止转载的内容不能复制

王同学的博客 821

解除网页限制插件!

以QQ浏览器为例: 1,找到右上角点击 2,登录 3,点应用中心搜索Tampermonkey 工具栏就可以看到油猴标志了 解除网页限制脚本: 在线脚本复制浏览器打开即可安装):https://greasyfork.org/scripts/14146-%E7%BD%91%E9%A1%B5%E9%99%90%E5%88%B6%E8%A7%A3%E9%99%A4...

彳亍的博客 1万+

两种方法解除网页复制限制

一、SuperCopy超级复制浏览器插件 在Edge获取扩展中搜索 点击“破解禁止复制”就可以解除该域名下所有内容的复制限制 二、油猴脚本网页限制解除(改) 友情链接:https://greasyfork.org/zh-CN/scripts/28497-remove-web-limits-modified 安装后直接随意复制任何网站内容 ...

Doge的技术小屋 7637

解锁当前网站的复制限制右键限制选择限制等,适用于绝大部分网站

在网上找资料的时候,会有很多网站限制禁止复制右键的功能,下面提供了一种接触限制的操作方式。页面弹出解除成功弹框,表示运行成功。

abments的博客 1237

网页文本复制解除网页文本禁止复制限制的方法汇总

- 平时浏览网页和查找资料时,总会需要复制一些文字内容,用来引用、收藏、摘抄啊什么的。但也会遇到一些网站上的内容文本无法复制?!一般就是网站本身有禁止复制限制。本文整理了各种规避手段,供各位选用。

一介草民,只为生活。 5506

油猴脚本 - 破解网页输入框禁止粘贴进去内容

【代码】油猴脚本 - 破解网页输入框禁止粘贴进去内容。

qq_46086138的博客 3364

视觉大模型发展趋势解析:从CNN到Transformer再到NeRF的完整演进指南

近年来,**视觉大模型**领域经历了从卷积神经网络(CNN)到Transformer再到神经辐射场(NeRF)的快速技术迭代。这些突破性技术正在重塑计算机视觉的边界,为图像理解、生成和重建带来全新的可能性。从2012年AlexNet的横空出世到2020年Transformer在视觉领域的成功应用,再到NeRF带来的三维场景重建革命,视觉大模型的发展趋势展现出清晰的技术演进路径。 ## 🚀 CN

gitblog_00047的博客 443
上一篇: HTTP的请求及响应
下一篇: 微信小程序开发前期准备
苘迷
博客等级 码龄7年 19粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值