GithubHelp home page GithubHelp logo

fast_yiban's Introduction

快速易班校本化打卡

自疫情以来,易班打卡成了每天例行的繁琐任务。辅导员天天在年级群里催打卡。早些时候研究的是某高校大佬用python写的代码(项目地址),还很荣幸地贡献了v3版登录api(虽然现在已经废弃了)。后来大佬的代码停止维护了,v3地址也失效了,所以在研究出新的登录api后,用php重写了一遍,当时的思路就已经转换到使用web服务器来为多人提供打卡服务上了。后来觉得php上也不方便,又用nodejs写了一遍,到现在修修改改,已经跑了一年多了。再有一年多可能我也用不着了,所以把它开源了。

然而很遗憾的是距开源已经过去了8个月,还是没能摆脱易班打卡(悲) 而且在10月中旬竟然还有人发issue,索性把整个项目重新粉刷一下。结果就是鸽了一个月( 不过新版总算是在11月20号搞定了。但是有一说一上线还是很匆忙的,欢迎帮忙发掘bug。

结果距新版工具的发布还不到1个月,学校竟然不搞打卡了,有一种很亏的感觉(不是)怎么回事呢( 不过虽然我用不着这个工具了,但到我毕业前还是会尽量维护一下的。毕竟不知道啥时候会又开始要求打卡了呢

食用方法(针对Windows):

  1. 安装最新的nodejs。打开http://nodejs.cn/download/,点击“Windows 安装包”,下载完毕后运行安装包以安装nodejs。
  2. 下载源码zip压缩包,解压,打开解压后含有代码的文件夹,按住Shift不放并右键文件夹空白处,在出现的菜单中选择“在此处打开命令窗口”或者“在此处打开powershell窗口”。
  3. 在出现的黑色窗口中输入npm install,并回车。
  4. 修改config.js:根据config.js一节的指导,获取app_keyapp_secret_key(即安全密钥),并填入config.js中。这一步可以选择跳过,后果是网页将无法正常加载地图模块,也就是说不能用地图选点定位。
  5. 在步骤3的黑色窗口中输入node index,并回车。
  6. 浏览器打开http://localhost:4500,如果能够正常出现网页,就说明程序成功跑起来了。

其他系统下的操作方法类似。

如何打卡?

第一次打开网站时,网站什么都不会做,此时你需要点击“登录易班”,然后分别填入账号、密码,然后点击“登录”。此时页面会跳转到“程序日志”页,那里你可以看到你的登录状态。如果成功登录,你还会看到“开始打卡流程”的文字。你可能会奇怪,我只是点了登录,怎么就开始打卡了?不要急,这时程序会发现现在没有有效的打卡数据,从而转向寻找最新的未完成或待审核的任务。等到显示:“成功获取工作流 xxx 的具体表单项目”后,点击“打卡表单”,页面上会显示出该表单的标题(不是打卡任务的标题)、诸多可供填写的表单项目,和一个“提交表单”按钮。不同的表单项目通常长得不太一样,但是它们都会显示:是否是必填项目、项目标题、是否可应用于自动打卡这三个属性。需要注意的是“是否可应用于自动打卡”属性,它决定了接下来程序是否能够自动打卡,请根据你的需求选择。比如:“获取定位”,我的位置通常不会发生变化,因此该项我选择“可应用于自动打卡”。又比如:“昨天有没有做核酸”,这个是不确定的,因此项我选择“仅应用于当次打卡”。确定所有项目都填写妥当后,请点击“提交表单”按钮。然后等待“程序日志页”出现相应的反馈。如果有显示“提交任务成功”,就代表打卡成功了,一般还会显示当次打卡的分享链接。此时你大可以关闭网页溜之大吉,但如果你不想次次都填写复杂的表单,那么先不要关闭网页,而是保存网页的网址——细心的你可能已经发现,网页的网址已经变成长长的一大串了。把它全部复制下来,发给你的的QQ或微信小号,或者任何其他方法,把它保存下来,确保你需要的时候能找到它。

现在时间来到了第二天,你又需要打卡了,此时你回想起来,昨天你曾经在本网站成功进行了易班打卡,并且你幸运地找到了此前保存的长长的一串网址。你把它用浏览器打开了。如果一切正常,你会发现网页自动执行了登录操作,你不需要手动登录了。此时根据你昨天的选择,网页将会做出以下两种行为之一:自动开始打卡;提示你填写部分需要手动填写的项目。如果是前者,你什么都不用做,如果是后者,请点击“打卡表单”。你会发现少了很多项目需要填。那些项目都是此前被你标记为“可应用于自动打卡”的,因此你不用再填写它们了。等你填写完那些需要手动填写的项目后,点击“提交表单”。网页显示“提交任务成功”后,就可以关闭网页了。

一些说明

  • 上传签名,实质上是易班将你的签名转换为了一张图片,然后上传。所以在本程序里,这一步就被省略了,如需要上传签名,请自行准备一张签名图,最好是png格式。

  • 原来的通过改变url指向的图片,实现不改变打卡数据的情况下改变打卡内容的功能没了,因为我觉得它的成本和收益不对等。不如重新填一遍表来得快。而且现在可以只填写部分项目,更快了

  • 本着尽量少打扰的原则,没有诸如向指定邮箱发送打卡结果的功能。不过打卡成功后会返回分享链接,有截图需求的可以留意该链接。

  • 程序不支持以下表单组件:RelevantApplyGroupCountDurationTypeGroupTreeSelectConverIsInHighRiskArea。因为我还没见过这些组件长啥样,易班校本化的源码又很难看懂,不好反推,所以没法闭门造车。如果你有遇到以上这些组件,可以发个issue给我,协助我完善这个程序。

config.js

配置文件从json格式变成js了,但是并没有增加修改它的难度。反而由于允许注释,可读性更高了。

每项配置都有注释。这里只列3项常用的:

  //port是程序运行的端口
  port = 4500,

  //app_key和app_secret_code用于加载地图选点组件,获取方法见https://lbs.amap.com/api/javascript-api/guide/abc/prepare,网页中提到的Key即是app_key,安全密钥即是app_secret_code
  app_key = "",
  app_secret_code = "",

/public/res/announcement.json

用于实现简单的公告系统。由原来的/data/announcement.json迁移而来。

/data/blacklist.json

黑名单仍然存在,但是没有独立的配置文件了,而是合并到了public/js/index.html.jsApp类里。修改这个类就可以增删黑名单。

更新记录

  • 2022.11.20:大更新。以后应该就是在这个的基础上小修小补了。

    • 前端:有了新的ui;新的渲染表单方式;可以记录用户的操作以及服务器返回的信息
    • 后端:使用了WebSocket来和前端通信;支持各种文件上传;精简了http api(因为都使用websocket了)
    • 写了半天发现没啥好写的。。大概是想写的都写在源码的注释里了
  • 2022.11.28:进一步完善程序。

    • 期间的各种修正错字
    • 新ui反馈不明显,希望点击提交后可以自动跳到程序日志页
    • 建议新功能 为解决该问题,改造了下代码,使得打卡表单的每一项都可以选择是否可应用于自动打卡。这样一来,需要手动填的项目就会少很多了。
    • 明确区分了上传文件、上传图片和上传签名图,使提交的上传数据与官方的一致,避免出现奇怪的bug(比如查看任务结果时,打不开上传的图片)
  • 2023.4.22:解决人机验证问题

    • 网页易班的人机验证,是引入了一个人机验证模块,人机验证通过后生成token,将token和账号密码一块传给登录接口就ok。所以本程序也只需要引入那个人机验证模块就行了。

关于

该程序原本是为了闽江学院而定制的,但理论上能够兼容其他学校的“易班校本化”打卡。也就是说如果你们学校不是用“易班校本化”来打卡的,本工具对你来说就毫无用处了。如果在使用本工具中出现了问题,可以试试发个issue。

自己搭建的demo:https://yiban.doveyige.top

服务器似乎被易班拉黑名单了,没法访问www.yiban.cn,所以demo寄了

前端太丑:没办法,能力有限()能用就行了,要啥自行车

可能存在移动网络环境下打不开这个demo的问题,那是因为服务器地址在海外,移动墙中墙把我的网站风控了,导致打开极其缓慢(等到我忍无可忍了,一定去套cdn

fast_yiban's People

Contributors

yige233 avatar

Stargazers

 avatar  avatar  avatar  avatar Su1008 avatar SUNmode0586 avatar

Watchers

 avatar

fast_yiban's Issues

建议新功能

可否加个默认定位位置,每天划来划去选点有点浪费时间😭

大佬你好,关于易班打卡表单问题

我们学校是有打卡表单里面是有手写签名的,实际我抓包发现他是直接将手写的转成png,然后以图片的形式提交,然后我在index.html.js里面加了case "Signature":
Imageurl(el, id, props);
break;

想让他以图片形式提交,但是实际打卡结果显示不了图片,能正常打卡成功,

附件是我抓到的有关提交签名的包
签名.zip

你好,关于打卡数据的问题

我这边通过黄鸟找到的提交数据str,我复制粘贴到?sign_data=里面,提示sign_data的数据格式不正确,是我漏了一些特定的参数吗,

这是我用黄鸟抓到的
Str=SFBZOHBlalBKajcxUjRtczZHWW94TER4SmhobzhBVTVjbFQrN01LZFhZVUNHTVZQYTE0WFNJY1RoZ3ZFelVzZ1dqUkM2Wm9HTnFxMkhUSjZkakZsRVZRM0kvRHJnYm5ORFBhUUYxUDdWZElPZnZ5cEZKdWd1SnVZQ0h5TUxpcWk5Wlc3Tmt0aFZqQkxYWGZkWVdYTjR1Rnp0ejJ2OFlYMTB0aCtGYUFTeG1SSVZxWkIwbkVSSjFZZGZMazE1Qkt6eXcyVGdzcWw5V3pZMGZQRmFxOEhacE5LSG5uV0tIdmI1VWE1eGhUUXhXUG8wc1YwU0x1MUVkTHppZ3FuZWUyeWp3Qis3U3c2UkY1ZkNuOVgvMm5IczVFTTd3ZUY0S1IyWUVjbGJIOG5aMnYyUFJPVTN0ZU9VbmVkVVp2cVNYVWpzMW84NEpmbVQrYVVDR0oyRzNuV042dERSSEh5dTlzTDF1L01QZGdxcjhBK3lFcFNXaTFRUm1qbVlEZU5rbWo0VWF1c0FLT0lVKzUwYUZsdUN2c0V3YldyWHVVbXREeUlIOWdrcGgwcVJGOFpSTGFZVHEyZHNnWW5PZjBMYW5OeitrL3k4SGV3ZWttYUQ0MDNSRnRkMHU0N0lBTnl5VUw2cHI0YWlqTG5wOFZHaG9QaVo3Q25wa1VWYVl3TzVKM3FiWEl1a1lhRVpsenBGWk53MnZsMms0ZEFaY2xtWnI4cDlCc2ZsN3R1dHVCNEVubWpaRUo4MmVnZ3FtVzB6N1Y3YVFVSkw4NVlwYXJIUGZ5N05uU1cyZHQzVVNpN0VjNVVSTnZzR1pXTG9rUUhkL0luVkl3ZkxDakNIUnZydm5vbmN4VUowUFl2UDYxWlAwU1laZFBLY0dQNmtpQzBOK2l4amdKVEdxU1BFa1Y3ajJGeThEeGoxdzNXRjdDdWIyYXR4enJOTkJ0aWpvSXk2MytkWEthVGwzeTE0ZlQzTWg5bDRtL0xhaEhRMnYxM1VqZ0pCWkVpQVM4WGtJUS9QMXlhNHpVRjV5b2dpY0U1YndlQW1JT3dwd01KWDRuenVVMUZrb0ZvR1FxejJSTGdnZG5qSVFPYzRTTmFaeHhPcndIWG5SaVo3R3VDY3c4aCtFYkdNakJmS2swSlZ6ZFYxWDBJZUlaeXFuTTB4bk5CRzVIdkxYanhtNkxYVlZLdDFJN1JsZUQyN0xDbDRQSVMvZDBuczRiTXZFOGlBV09LVXlrRWJ2cGVpV3ZONTVLTjlMYXJ5Q2xvMG1xNVhTNkJOSlRrRlFRUkxrNVF2Yit2alFHU0lWdTQvdlFuQlRDSFh6ZFh3YXVDbG1JS1Nma1RYU0pjUDFiQnJxc0NsVmk1YVlORlpCMmFjUjUzNlM2RU9rVGpjUk1HWnVGZUJnRDNjQmRsbWRZcFFIN2U2OE11Nng4Zjh3YlpBc1dyKzhQREdCY1BOM0xQSTQ1RVdmMEZiOGlZcXErV0R0V08zNFIzNmJ3T0ZmMGFHTGlCVm5rN2NvSlpvWlVacjIzYmxUb3R4Z0wzNnJidVZGbEdrYmU4ZVdiWFhBOTBvVkIvTitBM3R6cXVYSEhsbnFweHJHMm9SbFltbHZpcmdubVZCNDVUT1ZWR2xoSVdXUnUvOEhOOGh3eHJuWGhLUnpjN1FLcGZuQktUWVVjV01aazUvdVIwVk5PVGRjamYwcWx5L1lFS2lCVXNIZm5UamVzNEtkZVJqTzlWMWFBaUJkMCtCREExNzNxSmQxY1hxVUJNclBTeGI5dWhaLzdpK3UzSGVuSmpCd3pKSzI0WldRZ0d3emVSSVI1NDMzWm5TYU5Vb2c5OVpnQ1M4dlIzeDhwQlVMS1JuSnNZU3hMWkhNWlEyWHkzMlZYZ2t3N0JYelFsTXEvS2Q5d0xLeUozYVN3VmVUSzVSY0ZjSTdRNE5MNHJOSGlpU3NrbExvNmtYVVhyNHhWZ3dWWFphSXVPM0pkTmc1WDNpQ0tRd1Y5VjVuczU3V0dweDkvTW5iYkZGTWUxamRLSEpIdktROHpoTGNWV0JsNnQ0aFBDam1LR3JrY29xaFdCcFpwdWJKd3pHWHY1SWhEM0hnVDZyMkRMeGlpemxFMUE1dUY3TjJyVldSL0dUZXpmaTRtcU15Y1FmeVBZZlM2cjFzSGUyUVU1UDYzekVBSXo5UHlmRWRjMkNhWGh1K29RWlFNVTZGR01hSEt2Wk5vSTlkaUYrZlVUMGxUMmV4TlFORkc5bDNOcjE2RXFETjZxRS9tcnNJOWxxamRteHVJN0RMRDVBQkJxR0c0blhobG1adnVQ

你好 第一步就不会了

你好大佬 1.安装最新的nodejs
这个第一部开始就没找到怎么安装 请问可以加下联系方式请教你吗 我的微信 S78910JQKKKAA

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.