热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何绕过这个“在线学习防挂机”限制???

一个在线学习网站,如果15分钟没有任何操作,就会自动退出。从网站上看到这段“防挂机”代码如下,请教如何绕过这个限制!varPageTimeCounter0;初始化页面挂机时间倒计
一个在线学习网站,如果15分钟没有任何操作,就会自动退出。
从网站上看到这段“防挂机”代码如下,请教如何绕过这个限制!


var PageTimeCounter = 0; //初始化页面挂机时间倒计时
var ShutdownCounter = 0; //初始化提示窗口关闭倒计时
var PageTime = 900; //定义页面弹出关闭信息时间,单位秒
var ShutdownTime = 300; //定义关闭信息持续时间,单位秒
var MsgStatus = "hide"; //初始化弹出消息显示状态
var ShowPop; //显示弹出消息
var HidePop; //隐藏弹出消息
function ready() {
    var PopMessage = document.getElementById("PopMessage");

    $(document).mousemove(function () { ChangeToMaskLess(); if (MsgStatus == "hide") { PageTimeCounter = 0; ShutdownCounter = 0; }; });
    document.getElementById('PopMessage').style.height = '0px';
    setInterval('ChangeToMask()', 5000);
    setInterval('CheckPageTime();', 1000);
}

function ChangeToMask() {//启用遮罩层,To-Hack-iframe
    var MaskDivZindex = document.getElementById("MaskDiv");
    MaskDivZindex.style.zIndex = "0";
}

function ChangeToMaskLess() {//禁用遮罩层,To-Control-iframe
    var MaskDivZindex = document.getElementById("MaskDiv");
    MaskDivZindex.style.zIndex = -100;
}

function CheckPageTime() {
    if (PageTimeCounter < PageTime)
        PageTimeCounter++;
    else
        PageTimeCounter = PageTime;
    $('#show').text(PageTime - PageTimeCounter); //页面挂机时间倒计时
    $('#ShowShutdownCounter').text(ShutdownTime - ShutdownCounter); //关闭当前浏览器窗口倒计时,以秒显示
    $('#PageTime').text((PageTime / 60).toFixed(0)); //页面挂机时间设定值,以分钟显示
    if (PageTimeCounter >= PageTime) {
        Show_Notice();
    }
}

function ShutdownPage() {
    ShutdownCounter++;
    if (ShutdownCounter >= ShutdownTime) {
        Exit();
    }
}

function Exit() {//强制关闭当前浏览器窗口
    window.opener = null; window.open("", '_self', ""); window.close();
}

function Show_Notice() {
    var PopMessage = document.getElementById("PopMessage");
    var popH = parseInt(PopMessage.style.height); //将对象的高度转化为数字
    PopMessage.style.display = "block";
    ShowPop = setInterval("changeH('up')", 20);
    ShutdownPage();
}

function Close_Notice() {
    PageTimeCounter = 0;
    ShutdownCounter = 0;
    var PopMessage = document.getElementById("PopMessage");
    var popH = parseInt(PopMessage.style.height); //将对象的高度转化为数字
    PopMessage.style.display = "block";
    HidePop = setInterval("changeH('down')", 20);
}

function changeH(str) {//显示和隐藏退出提示框
    var PopMessage = document.getElementById("PopMessage");
    var popH = parseInt(PopMessage.style.height);
    if (str == "up") {
        if (popH <= 100) {
            PopMessage.style.height = (popH + 4).toString() + "px";
        }
        else {
            clearInterval(ShowPop);
            MsgStatus = "show";
        }
    }
    if (str == "down") {
        if (popH >= 4) {
            PopMessage.style.height = (popH - 4).toString() + "px";
        }
        else {
            clearInterval(HidePop);
            PopMessage.style.display = "none";
            MsgStatus = "hide";
        }
    }
}

$(document).ready(ready); //启动主程序

6 个解决方案

#1


var PageTime = 900;定义大点~

#2


js是在本地运行的,你可以试着使用firebug之类的修改js代码,甚至删除相应的脚本。

#3


注释这么全面
如果以上那些是全局变量的话,直接地址栏注入js
Javascript:alert(PageTime=1000000);
或者:
Javascript:alert(Show_Notice=function(){});

如果不是全局变量,用谷歌Chrome打开,通过开发者工具将代码改掉,比如去掉Show_Notice函数内的代码

#4


引用 2 楼 xzy21com 的回复:
js是在本地运行的,你可以试着使用firebug之类的修改js代码,甚至删除相应的脚本。


这个js是存放在本地临时目录下吗?直接修改里面的代码有用吗?

#5


js无非就两种形式,直接写在HTML里,或者是用src链接进入。直接写的你就直接改,如果是src的你可以复制好脚本并删除src节点,如果部分脚本还是必须要的那你就复制好脚本到HTML里改。

#6


LZ在google浏览器试下再添加一个script节点到这个script节点后面,把ShutdownTime改大点。

或者

推荐阅读
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 深入理解Java中的多态性概念及其应用
    多态是面向对象编程中的三大核心特性之一,与封装和继承共同构成了面向对象的基础。多态使得代码更加灵活和可扩展,封装和继承则为其提供了必要的支持。本文将深入探讨多态的概念及其在Java中的具体应用,帮助读者全面理解和掌握这一关键知识点。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • JavaScript对象类型 ... [详细]
  • (一)前言:二次开发编辑器neditor(基于百度编辑器ueditor):界面相对于ueditor会更美观.(二)问题描述:最近在公司项目中遇到一个比较奇葩的问题。neidito ... [详细]
  • Thisquestionalreadyhasananswerhere:这个问题已经有了答案:HowcanIdisplayaJavaScriptobje ... [详细]
  • $(document).ready没有 ... [详细]
author-avatar
遗失的美好顺_599
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有