每日上报

发布于 2021-03-06  106 次阅读


每日自动上报

前言

每个高校或者工作单位, 每日上报所用的客户端和API不同, 不可能做到一个脚本多方通用. 本着授人以鱼不如授人以渔的原则, 我这里主要讲的是完成自动每日上报的方法, 编写脚本的时候需要一点点的编程能力, 不过都上大学了, 应该会一门C或Python吧, 所以问题不大.

抓包

这是完成每日自动上报第一步. 这个根据客户端不同, 有的人是最麻烦的一步, 有的人是最简单的一步. 如果你们学校提供多个客户端, 按照以下顺序选择Web端 > PC端 > 手机端. 我按照顺序说下每个客户端的抓包步骤.

Web端

到你们学校填每日上报的网站上按F12打开控制台(PS: 建议使用谷歌或火狐浏览器), 如果F12键被禁止了, 按ctrl+shift+i. 点Network, 然后填好你的上报信息, 这时不要点提交, 去按下上面的那个步骤1上的按键, 清空所有的请求, 然后去按每日上报的提交按钮, 然后一般第一个请求就是需要的请求, 如果不是的话就需要你自己去看一下请求体了, 返回的html, css, js等静态资源的请求一般不是提交请求. 找到自己的提交请求, 按步骤三以curl的格式导出请求, 抓包就到此结束了.

-00.jpg

PC端

PC端其实和Web端一样简单, 只是需要下载个抓包工具, 下载fiddler 4. 然后运行, 开始抓包. 和Web端一样的步骤, 只是最开始用下方粉红色标识出来的瞄准准星选择你需要抓包的进程(直接拖到程序窗口上就可以了). 然后填写报告表单, 不要提交, 点击红线圈出来的叉叉, 清空请求, 点提交, 然后按下面第二张图片中的选择用curl的格式导出请求.

每日上报

每日上报

手机端

手机端抓包是最麻烦的, 我这里说一种我认为的最简单的办法. 下载wireshark, 然后打开电脑热点, 手机连电脑热点上, 然后去windows网络中心查看热点的虚拟网卡是哪张, 然后用wireshark对该网卡抓包. 按照和上面差不多的步骤找到需要的POST包, 由于wireshark是针对网卡抓包, 抓到的包可能很多很杂, 这个时候你需要用过滤器来过滤请求, 可以用域名过滤也可以用进程端口号来过滤, 如: http.host contains xxx.edu.cn... wireshark没有导出为curl的功能, 所以你只能把整个HTTP请求复制下来然后找个在线转成curl的网站或其他工具转成curl文本, 如果对curl比较熟练, 自己写也行.

编写脚本

个人建议用自己熟悉的语言来写, 这样比较快, 用shell, python或php写也行, 都有与curl相关的包. 导入使用就行, 这里由于每个学校的每日上报API不同所以请求参数肯定也不同, 每个人语言也不同, 所以不做过多说明, 仅说下需要注意的步骤, 每日上报的日期是前一天, 和地址有关的参数很多(鬼知道那些会用, 那些不用), 有的甚至把获取地址API的返回响应整个作为一个参数放了进去. 有的地址是中文转16进制的, 所以你需要把中文地址转换一下. 还有的把获取地址的API返回的响应作为参数传入, 所以这个时候你就不能编写比如夜之城丽景区大鸟转转转酒吧这类地球上不存在的地点.

执行脚本

要定时执行脚本大概有三种方法, 一是Windows上的任务计划程序, 二是Linux上的crontab程序, 看你服务器上的操作系统来决定, 两种方法都很简单, 不会的话谷歌上查下就OK了. 如果你没有服务器你可以使用GitHub提供的github action(这需要学习一下使用方法, 以后我应该会写这个的使用教程, 因为这个真的很方便), 或者使用TravisCI的build matrix(一样需要学习如何使用), 或者买一台服务器(以后应该会有相关教程博客). 个人建议买一台或学习Github Action使用方法.


人生如逆旅,我亦是行人。