吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4135|回复: 48
收起左侧

[Web逆向] 【Web逆向】关于我是如何解决mooc禁止右键、复制

  [复制链接]
hualy 发表于 2024-4-18 21:27
本帖最后由 hualy 于 2024-4-18 23:24 编辑

[

            

查找资料js设置或禁用鼠标右键菜单 - 简书,说是当用户点击鼠标右键的时候oncontextmenu事件被触发             

又开始查资料:破解网页右键被禁止js_document.onselectstart = document.oncontextmenu= d-CSDN博客

网页上如何实现禁止复制粘贴以及如何破解  Ln's Blog

网页上如何实现禁止复制粘贴以及如何破解 - 孤舟残月浅笑嫣然 - 博客园

如何优雅的破解页面的禁止复制、选中! - 技术交流 - Spring Boot中文社区

上面这些网页的资料感觉是有点用,但我觉得有点复杂,就想着还有没有更加方便的办法去破解,于是就试着去问问chatgpt,果然,有一下挺方便的办法,经过测试并且简单有效的,如下: 1. 取消函数的引用

如果你希望从某个对象中删除一个方法,或者将一个变量引用的函数置为 null 或 undefined,可以使用以下方式:

var myFunction = function() {
  console.log("Hello, world!");
};

// 调用函数
myFunction();

// 取消引用
myFunction = null;

// 此时调用 myFunction 将会出错,因为它已经不再是一个函数
// myFunction(); // TypeError: myFunction is not a function

所以,可以在控制台输入:

document.oncontextmenu = null

            

但是此方法一刷新,就失效了

  1. 将函数替换为空函数

有时,为了避免错误或其他原因,你可能只想简单地使一个函数“失效”,而不是完全删除引用:

function doSomething() {
  console.log("Doing something...");
}

// 替换为不执行任何操作的空函数
doSomething = function() {};

// 此时调用 doSomething 将不会有任何输出
doSomething();
document.oncontextmenu = function() {};

            

此方法也是一刷新,就失效了

所以有什么好办法呢?

再问一下chatgpt,说是使用 localStorage 控制函数触发,但我觉得这样子有点复杂了,万一一不小心清除缓存,还不是得再来一遍,倒不如就直接油猴吧!

来都来了,看着源代码下面的禁止复制,也搞一下好咯

[JavaScript] 纯文本查看 复制代码
// ==UserScript==
// @name mooc接触禁止右键、复制
// @namespace www.icourse163.org
// @version 0.1
// @description 允许mooc右键、复制
// @author hualy
// @match ://www.icourse163.org/
// @grant none
// @run-at document-start
// ==/UserScript==

(function() { 'use strict';

// 设置 document.oncontextmenu 为 null 来启用右键菜单、复制 document.addEventListener('DOMContentLoaded', function() { document.oncontextmenu = null; document.onkeydown = null; }); })();

复盘:仔细想了一下,有值得改进的地方: 1、可以直接搜索弹出的字符串            

2、刚开始我想着让油猴脚本代码更具有拓展性,使得在各个网站都可以解除限制,但后来想了一下,好像没多大必要,倒不如直接专精一点,减少代码量,用得到再处理,那样子代码写起来简单一点,又容易理解

3、求好评


三滑稽甲苯的启发,优化了一下核心代码:

[JavaScript] 纯文本查看 复制代码
(function() {
'use strict';
a = ["oncontextmenu", "onkeydown"] //在此添加监听类型
a.forEach((type) => {
document.addEventListener(type, (e) => {
e.stopImmediatePropagation();
}, {capture: true});
});
})();



免费评分

参与人数 21威望 +1 吾爱币 +38 热心值 +19 收起 理由
笙若 + 1 + 1 谢谢@Thanks!
0xa00000 + 1 + 1 我很赞同!
warobot + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
timeni + 1 + 1 用心讨论,共获提升!
Jayden-Zhu + 1 + 1 热心回复!
SakuraCOOH + 1 谢谢@Thanks!
MYPcodcsja + 1 + 1 我很赞同!
liuxuming3303 + 1 + 1 谢谢@Thanks!
zzpu213 + 1 + 1 谢谢@Thanks!
hwh425 + 1 谢谢@Thanks!
allspark + 1 + 1 用心讨论,共获提升!
pdcba + 1 + 1 谢谢@Thanks!
唐小样儿 + 1 + 1 我很赞同!
xiaozhiboy + 1 + 1 我很赞同!
tomhex + 1 + 1 谢谢@Thanks!
hopecolor514 + 1 我很赞同!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
极地企鹅 + 1 + 1 我很赞同!
xlln + 1 + 1 我很赞同!
nianci + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

三滑稽甲苯 发表于 2024-4-18 22:19

通杀禁止右键:

document.addEventListener("contextmenu", (e) => {
    e.stopImmediatePropagation();
}, {capture: true})

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
百里梦想 + 1 + 1 我很赞同!
极地企鹅 + 1 + 1 我很赞同!

查看全部评分

libw 发表于 2024-4-19 10:33
本帖最后由 libw 于 2024-4-19 10:35 编辑

再来个通杀几乎所有限制:
[JavaScript] 纯文本查看 复制代码
(function () {
    /**
     * 还原所有修改
     */
    window.onload = function () {
        function fixChanges() {
            // 修复选中限制
            const styleTag = document.createElement('style');
            styleTag.innerHTML = '*, #app {margin: 0;padding: 0;user-select: auto !important;}';
            document.head.appendChild(styleTag);
            // 修复按键限制
            ['onkeyup', 'onkeydown', 'onkeypress', 'onmousedown', 'onselectstart', 'oncontextmenu'].forEach(event => {
                window[event] = null;
                document[event] = null;
            });
            // 清空计时器
            window.clearInterval(fixChangesInterval);
        }
        const fixChangesInterval = window.setInterval(fixChanges, window.Math.ceil(Math.random() * 128));
    };
})();
zxc112 发表于 2024-4-18 21:30
本帖最后由 zxc112 于 2024-4-18 21:32 编辑

这个厉害了
多谢分享
怎么识别要用到那个函数呢
网页上代码那么多,有什么思路分享参考下学习学习
Pwaerm 发表于 2024-4-18 21:34
安装一个浏览器插件
AK47ak17 发表于 2024-4-18 22:05
哇,你真是神了,最近一直在慕课上看课,想复制这个,你就发教程了,我要去试一试
 楼主| hualy 发表于 2024-4-18 22:05
zxc112 发表于 2024-4-18 21:30
这个厉害了
多谢分享
怎么识别要用到那个函数呢

document.oncontextmenu= function(){
alert("禁止使用右键");
window.event.returnValue=false;
};
这个是禁止右键的代码,因为右键的时候,明显弹出了一个弹框,并且显示着禁止使用右键,在看一下下面的代码,event.returnValue,其作用就是:当捕捉到事件(event)时,判断为false,则阻止当前事件继续运行,搜索一下就知道了,所以判定是这个函数
Do2K1ng 发表于 2024-4-18 22:12
学习到了哇,太酷啦
hjtkxg 发表于 2024-4-18 22:22
太棒了!我学到了很多新知识,感谢作者的精心撰写。
xuelinghua 发表于 2024-4-18 22:25
谢谢分享,我一直都用的插件,还能这样
 楼主| hualy 发表于 2024-4-18 22:30
三滑稽甲苯 发表于 2024-4-18 22:19
[md]通杀禁止右键:
```js
document.addEventListener("contextmenu", (e) => {

这个厉害的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 15:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表