index.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3. <title>实验中学成绩整理</title>
  4. <script type="text/javascript" src="/js/jquery.min.js" crossorigin="anonymous"></script>
  5. <link rel="stylesheet" href="/css/bootstrap.min.css" crossorigin="anonymous">
  6. <script type="text/javascript" src="/js/bootstrap.min.js" crossorigin="anonymous"></script>
  7. <script async src="/js/saver.min.js"></script>
  8. <script async src="/js/echarts-5.4.1.min.js"></script>
  9. <script src="/js/aes.js"></script>
  10. <script src="/js/pad-pkcs7.js"></script>
  11. <script src="/js/mode-ecb.js"></script>
  12. <link href="https://fonts.loli.net/css2?family=Anonymous+Pro:ital,wght@0,400;0,700;1,400;1,700
  13. &family=Noto+Serif+SC:wght@300;400;500;600;700&display=swap" rel="stylesheet">
  14. <link rel="stylesheet" href="/css/style.css">
  15. <script type="text/javascript" src="/js/score.js"></script>
  16. <style>
  17. .btn.btn-how {
  18. min-height: 35px;
  19. margin-right: 1px;
  20. margin-left: 1px;
  21. }
  22. .btn.btn-how.active {
  23. margin-right: 3px;
  24. margin-left: 3px;
  25. min-height: 40px;
  26. border-bottom: none;
  27. border-bottom-left-radius: 0;
  28. border-bottom-right-radius: 0;
  29. }
  30. body {
  31. transition-duration: 300ms;
  32. }
  33. #controls {
  34. position: fixed;
  35. bottom: 20px;
  36. right: 20px;
  37. padding: 5px;
  38. border: 5px solid rgba(15, 15, 15, 0.1);
  39. border-radius: 15px;
  40. background-color: rgba(15, 15, 15, 0.1);
  41. backdrop-filter: blur(5px);
  42. z-index: -1;
  43. }
  44. #name {
  45. background-color: rgba(215, 215, 215, 0.7);
  46. border-radius: 5px;
  47. padding-right: 3px;
  48. }
  49. #controls:not(.disabled) {
  50. z-index: 1;
  51. }
  52. .well {
  53. border-top-left-radius: 0;
  54. border-top-right-radius: 0;
  55. border-bottom-left-radius: 30px;
  56. border-bottom-right-radius: 30px;
  57. -webkit-box-shadow: inset 0 3px 3px rgb(0 0 0 / 5%);
  58. box-shadow: inset 0 3px 3px rgb(0 0 0 / 5%);
  59. }
  60. img {
  61. transition-duration: 300ms;
  62. border: 3px dotted grey;
  63. width: 100%;
  64. }
  65. .minus {
  66. transition-duration: 300ms;
  67. color: rgb(217, 83, 79);
  68. font-weight: 800;
  69. font-family: 'Consolas';
  70. background-color: rgba(215, 215, 215, 0.7);
  71. position: absolute;
  72. border-radius: 4px;
  73. padding: 2px;
  74. }
  75. .minus.full {
  76. color: rgb(92, 184, 92);
  77. }
  78. .sp {
  79. outline: 1px solid rgba(15, 15, 15, 0.7);
  80. background-color: rgba(215, 215, 215, 0.7);
  81. position: absolute;
  82. border-radius: 1px;
  83. }
  84. .sp.cor {
  85. background-color: rgba(92, 184, 92, 0.7);
  86. }
  87. .sp.err {
  88. background-color: rgba(217, 83, 79, 0.7);
  89. }
  90. .avgSc {
  91. background-color: rgba(199, 217, 79, 0.3);
  92. font-family: 'Courier New', Courier;
  93. }
  94. .fullSc {
  95. background-color: rgba(199, 217, 79, 0.3);
  96. font-family: 'Courier New', Courier;
  97. }
  98. .mySc {
  99. color: white;
  100. background-color: rgba(6, 65, 106, 0.505);
  101. font-family: 'Courier New', Courier;
  102. }
  103. .list-unstyled>li {
  104. background-color: rgba(217, 83, 79, 0.2);
  105. }
  106. .list-unstyled>li.fullScore {
  107. background-color: rgba(199, 217, 79, 0.3);
  108. }
  109. .sc {
  110. position: relative;
  111. }
  112. </style>
  113. </head>
  114. <body>
  115. <a class="btn btn-info" href="https://43.143.233.184/"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>&nbsp;返回</a>
  116. <a tabindex="0" class="btn btn-warning hidable toggleHide" onclick="$('.hidable').show(1000);$('.toggleHide').toggle(1000)" style="display:none;">
  117. <span class="glyphicon glyphicon-eye-close" aria-hidden="true"></span>
  118. </a>
  119. <div class="hidable fetch">
  120. <div class="page-header">
  121. <h1>
  122. 实验中学成绩整理
  123. <small>基于心意答数据整理汇总考试成绩</small>
  124. </h1>
  125. </div>
  126. <h3>如何获取数据</h3>
  127. <p>点击 <span class="text-danger">?!</span> 按钮即可获取,如有疑问请咨询我。</p>
  128. <a onclick="$('.getData').toggle(500)">原始方法</a>
  129. <div class="getData" style="display: none;">
  130. <p>尽量使用 Google Chrome 浏览器,不保证其他浏览器操作相同。</p>
  131. <p>1. 进入心意答查分页面;</p>
  132. <p>2. 按下 F12 打开控制台,若无反应,尝试 Fn+F12;</p>
  133. <p>3. 控制台顶栏分页中找到“<b>网络</b>”或“<b>Network</b>”(可能需要从下拉框里面找);</p>
  134. <p>4. 刷新页面(用 F5 刷新),此时应看到控制台中出现一批文件,点击其中的“<b>getStudentReportMEVO</b>”;</p>
  135. <p>5. 在新出现的小页面的顶栏分页中找到“<b>预览</b>”或“<b>Preview</b>”;</p>
  136. <p>6. 此时应看到“{data: {,...”等数据,一定在数据第一行右键(或在其最后一行下方空白处右键),随后“<b>复制物体</b>”或“<b>Copy Object</b>”;</p>
  137. <p>7. 新建文本文档(格式为 txt,不可用 Word 文档),将所复制的内容粘贴并保存,于下方按钮打开。</p>
  138. <p style="font-size: 12px;font-style: italic;">
  139. 注:图表整理均在本地进行,你的成绩不会上传到网络(上传与否,已经不重要了)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把所有人的成绩信息完整地公布在接口上,心意答我真服了你!
  140. </p>
  141. <a tabindex="0" class="btn btn-default fetch" href="tutor/">
  142. <span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>&nbsp;<b>查看示例截图</b>
  143. </a>
  144. </div>
  145. <h3>操作指南</h3>
  146. <p>1. 加载多个文件后,使用方向键或右下角控件可在文件间快速切换,方便比较;</p>
  147. <p>2. 点击图例可隐藏部分内容;</p>
  148. <p>3. 鼠标悬浮于右下角控件可让图片半透明,方便查看小分。</p>
  149. </div>
  150. <div class="fetch" style="display:none">(高质量接口)</div>
  151. <div class="input-group fetch" style="display:none">
  152. <span class="input-group-addon">考试编号<a data-toggle="tooltip" data-placement="bottom" title="心意答点击考试标题后,切换考试的列表里可见" aria-hidden="true">*</a></span>
  153. <input id="Id" type="text" class="form-control" autocomplete="off">
  154. </div>
  155. <div class="input-group fetch" style="display:none">
  156. <span class="input-group-addon">姓名<a href="/js/e.json" onclick="setWeigh2()" data-toggle="tooltip" data-placement="bottom" title="仅限2025届高考部">*</a>或数字校园号</span>
  157. <input id="Input" type="text" class="form-control" autocomplete="off" placeholder="20222001 或 小明">
  158. <span class="input-group-btn">
  159. <button type="button" class="btn btn-success" onclick="fetchMe($('#Input').val())" id="fetchBtn"><span class="glyphicon glyphicon-hand-right" aria-hidden="true"></span> FETCH</button>
  160. </span>
  161. </div>
  162. <div style="text-align: center;" class="hidable">
  163. <div class="btn-group">
  164. <a id="upbtn" tabindex="0" class="btn btn-info" onclick="document.getElementById('fileInput').click();">
  165. <span id="upicon" class="glyphicon glyphicon-open" aria-hidden="true"></span> <b>打开文件</b><input style="display: none;" id="fileInput" type="file" onchange="getFiles(event)">
  166. </a>
  167. <a id="upbtn" tabindex="0" class="btn btn-danger" onclick="check()">
  168. <b>?!</b>
  169. </a>
  170. <!-- If you must... -->
  171. </div>
  172. <a tabindex="0" class="btn btn-warning toggleHide fetch" onclick="$('.hidable').hide(1000);$('.toggleHide').toggle(1000)">
  173. <span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
  174. </a>
  175. </div>
  176. <div id="controls" class="disabled" style="text-align: center;" onmouseenter="$('img').css('opacity','0.1')" onmouseleave="$('img').css('opacity','1')">
  177. <div id="name"></div>
  178. <div class="btn-group">
  179. <a id="lbtn" tabindex="0" class="btn btn-default disabled" onclick="prevFile();">
  180. <span class="glyphicon glyphicon-arrow-left" aria-hidden="true"></span>
  181. </a>
  182. <a id="rbtn" tabindex="0" class="btn btn-default disabled" onclick="nextFile();">
  183. <span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span>
  184. </a>
  185. </div>
  186. </div>
  187. <div id="message" class="hidable"></div>
  188. <div id="fileInfo" class="hideble"></div>
  189. <div class="chart">
  190. <ul class="nav nav-tabs">
  191. <li class="active"><a href="#chart" data-toggle="tab" onclick="resizeChart()">图表</a></li>
  192. <li><a href="#data" data-toggle="tab">数据</a></li>
  193. <li><a href="#single" data-toggle="tab" onclick="getSe(curSe,1,1)">答题卡</a></li>
  194. <li><a href="#detail" data-toggle="tab" onclick="getSec(curSe,1,1)">小分</a></li>
  195. <li><a href="#other" data-toggle="tab">谁问你了</a></li>
  196. </ul>
  197. <div class="tab-content well well-sm">
  198. <div class="tab-pane fade in active" id="chart">
  199. <br>
  200. <button id="resizeBtn" class="btn btn-default" onclick="resizeChart()" style="display: none;">图表没显示?暴力重置一下</button>
  201. <div id="comp" class="chart"></div>
  202. <h4>班内一览表</h4>
  203. <div id="score1" class="chart"></div>
  204. <div id="score2" class="chart"></div>
  205. <h4>排名</h4>
  206. <div id="order2" class="chart"></div>
  207. <div id="order4" class="chart"></div>
  208. <div id="order1" class="chart"></div>
  209. <div id="order3" class="chart"></div>
  210. <br><br>
  211. </div>
  212. <div class="tab-pane fade" id="data">
  213. <div id="fileOutput"></div>
  214. <div style="text-align:center">
  215. <a id="downbtn" tabindex="0" class="btn btn-default" onclick="down()">
  216. <span id="upicon" class="glyphicon glyphicon-save" aria-hidden="true"></span> <b>导出源文件</b><input style="display: none;">
  217. </a>
  218. <a id="downbtn" tabindex="0" class="btn btn-default" onclick="$('.active.in').wordExport('data')">
  219. <span id="upicon" class="glyphicon glyphicon-save" aria-hidden="true"></span> <b>导出
  220. Word</b><input style="display: none;">
  221. </a>
  222. </div>
  223. </div>
  224. <div class="tab-pane fade" id="single" style="min-height: 1000px;">
  225. </div>
  226. <div class="tab-pane fade" id="detail" style="min-height: 1000px;">
  227. </div>
  228. <div class="tab-pane fade" id="other">
  229. <p>Nobody asked</p>
  230. <p>原为实验中学 74 桌出品,我仅做搬运修改。</p>
  231. <p><a href="how">有关如何破解接口(备忘)</a></p>
  232. <p><a href="/js/score.js">压缩前代码</a></p>
  233. <p>如恶意使用接口,后果自负、、</p>
  234. <br><br><br>
  235. <!-- <p>你是否还想看看别人考的怎么样?</p>
  236. <p>想看别人考的怎么样,首先你得安装并启用<a href="https://greasyfork.org/zh-CN/scripts/456705-wangshaui-simulator"
  237. target="_blank">这个脚本</a>。</p>
  238. <p>假如你安装脚本都费劲,那无论如何你得先装上 Chrome 浏览器,我已经帮你把 Tampermonkey 搞来了,你只需要<a href="tutor/tamper.crx">下载</a>,Chrome
  239. 大概率会自动安装,你再<a href="https://greasyfork.org/zh-CN/scripts/456705-wangshaui-simulator"
  240. target="_blank">从这里</a>就能直接安装脚本了。</p>
  241. <p>随后进入心意答界面。多刷新几次,你会发现你来到了后台,然后你得进入学情分析页。</p>
  242. <p>这时按
  243. <kbd>F12</kbd> 打开 DevTools 界面,从顶栏分页找到 Network,再刷新一次。
  244. </p>
  245. <p>此时应出现一堆文件的列表,从里面找到以 'app.9739...'
  246. 开头的那个文件,右键选择 Block request URL 屏蔽它。</p>
  247. <p>不要关闭 DevTools,再次刷新,你就能看到别人考的怎么样了。假如你还想从不同老师的视角看,可以点击顶端的
  248. changeId 按钮,至于老师的 id 是多少,你可以上数字校园邮箱里面翻一翻。</p>
  249. <img async src="tutor/5.png"> -->
  250. </div>
  251. </div>
  252. </div>
  253. </body>