热门标签 | 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改大点。

或者

推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
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社区 版权所有