是的,同学,因为这一次忘交作业,保研和奖学金都与你无缘,校园活动会禁止你参加,你的美好大学生活到此结束。同学会瞧不起你,原友会嘲笑你,校园里的猫猫狗狗也会冷落你。在以后无数个不眠的夜晚,你总会回想起这次忘交作业,你悔恨于自己的选择,悲愤于努力得不到回报。你的未来全都因这一次忘交作业毁于一旦,你计划好的人生被完全打乱,你畅想的结局不可能实现,你只能灰溜溜的从这个大学毕业,在家乡拿着你过去瞧不起的薪资,和一个不喜欢的人结婚,背上沉重的贷款和生活压力。诗和远方离你而去,你的双眼不再显现希望。多年以后,你的儿子儿孙问你过去的梦想的是什么,你思索半天,眼眶中流出热泪:交上这次作业。
吐槽
一个把截止时间和类型检测都写在前端的平台无疑是烂到了极点的。在此之前无人发现,并非是我做了多么高深的工作,而是没人想到一个211高校的课程平台竟会如此粗制滥造。
原理太过于简单,以至于拿这件事水一篇blog看起来跟刷kpi一样,尽管毫无技术价值,但这个蠢得要死的方法能拯救很多人过期的作业,还是写写教程帮助非CS相关的同学补交作业吧。
点点Star支持一下主播谢谢喵
该方法不垄断,不藏私,免费公开。不用点赞不用评论无需硬币,给我的github项目点点star就是最大的支持了,star一下谢谢喵
已经被针对性修复啦!
后端加了检测,现在补交作业会返回{"flag":"1","msg":"??????"}
网页还引入了jyd20241210.min.js
限制F12控制台,打开后循环启用debugger使网页暂停,在F12中关闭断点可以解决,但后端加了检测就没法补交了
aaa();
function aaa(){
setInterval(() => {
debugger;
}, 100)
}
方法
一言以蔽之,就是F12启用开发人员工具,在网页元素中,ctrl+F
进行搜索,修改网页前端里jiaozuoye()
函数的传参,将其传进去的endTime
(即倒数第二个参数)向后修改,即可补交作业。

<div class="listBtn" onclick="jiaozuoye(259537,'0','0','0','0','2024-12-12 00:00','2024-12-15 00:00','undefined','undefined','0', '1', '1','2124-12-13 00:00', 'null')">提交</div>
倒数第二个参数就是endTime,把它改成100年后就行了
jiaozuoye函数的定义:
//学生交作业
function jiaozuoye(id, tijiao, pigai, contentType, fz, openTime, endTime,groupId,groupName,return_num, makeUpFlag, isRepeat, makeUpTime, return_flag)
注意
尽管可以提交已过期的作业,但请注意以下事项:
- 如果老师已经批改过这次作业了,你交了也没人判分
- 尽管可以提交上去,提交时间是后端给出的,作业查看页面会显示“补交”
- 不保证该方法不会被发现,发现了请不要把我供出来,就说你啥也不知道莫名其妙就交上了
最后,建议还是使用新海天作业通知机按时完成作业,做遵纪守法的好学生。
油猴脚本自动化
// ==UserScript==
// @name 北京交通大学智慧课程平台无限制补交作业
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 延长作业截止时间到一百年后,可以补交作业
// @author 上条当咩
// @match http://study.bjtu.top:88/ve/back/coursePlatform/coursePlatform.shtml*
// @match http://123.121.147.7:88/ve/back/coursePlatform/coursePlatform.shtml*
// @license MIT
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 创建一个mutation观察器来监视DOM变化
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes.length) {
processNodes();
}
});
});
// 开始观察整个文档树的变化
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
// 处理页面上的节点
function processNodes() {
// 获取所有包含'listBtn'类的div元素
const submitButtons = document.querySelectorAll('div.listBtn');
submitButtons.forEach(button => {
if (button.textContent === '提交') {
// 获取原始的onclick属性值
const originalOnclick = button.getAttribute('onclick');
if (originalOnclick && originalOnclick.includes('jiaozuoye')) {
// 提取原始参数
const params = originalOnclick.match(/jiaozuoye\((.*?)\)/)[1].split(',');
// 计算100年后的日期
const futureDate = new Date();
futureDate.setFullYear(futureDate.getFullYear() + 100);
const futureDateStr = futureDate.toISOString().split('T')[0] + ' 00:00';
// 替换最后的时间参数(倒数第二个参数)
params[params.length - 2] = `'${futureDateStr}'`;
// 创建新的onclick函数,移除alert并更新时间
const newOnclick = `jiaozuoye(${params.join(',')})`;
// 更新按钮的onclick属性
button.setAttribute('onclick', newOnclick);
button.textContent = '无限制提交'
}
}
});
}
// 初始运行一次以处理页面上已有的元素
processNodes();
})();
自动延长作业截止时间到一百年后
油猴脚本样式预览

Comments NOTHING