一个充满炫酷黑科技的外挂网站

这个网站的成品在这里

本期向你演示如何用一群菜鸡组合起来玩出花样。

重要:这个属于日站范畴,未经允许日站属于犯法,请谨慎模仿。

起因

一切的开始,始于这个页面

疫情期间,学校要求每个人每天都要前往这个页面上报自己的健康情况,以及有没有接触过相关敏感人员,还有体温等信息。打开页面后,首先使用自己的学号+身份证后六位登录,然后填写信息提交。

我向相关好友提及此事,好友说,我要是有了问题,还用在这填写这个吗,我早去医院了。有问题的不会填写这个,填写这个的大多都没问题。我听闻此言大受启发,决定开发一个自动上报的工具,造福大家,这样就不需要早起填写了。

然鹅整个项目只是为了学习交流而开发,并没有投入真实使用。

开发准备

我掐指一算,这个项目需要用到前端页面、后端接口、定时任务、数据库、短信服务。要是搁平时,可能就用正常的php、html、mysql组合了。突然意识到这次需要定时任务,需要用到linux crontab,于是决定这次使用一次php控制台。然后还懒得用框架,因为项目太小了,所以接口就用php单文件。没有框架的话就没有好用的mysql类库了,还懒得自己一遍一遍地写那个单例模式的数据库类,所以这次不用数据库了。我研究了一个文件存储数据的方式,类似于平时的日志。反正程序小,也是自己玩,怎么开心怎么做。

这玩意具体的流程是这么设计的。

先整个前端页面,让人进来填自己的用户名和密码,然后还得填手机号。填完了信息之后调一下大学印象的接口,看看登录成功没。要是登录成功了就给存到服务器上。为了体现自己这个东西的与众不同,我自动签到完得给人发个短信通知一下。再安排个定时任务,每天定时就给签了。流程上看挺简单的。

准备目录结构

我们需要这样几个目录分别做不同的事。

  • /api 接口目录
  • /commandLineTools 命令行程序目录
  • /pages 前端页面目录
  • /data 存点数据啥的
  • /data/log 存放每次执行定时任务后的日志
  • /data/sysconfig 存放系统配置,这个要被gitignore忽略掉
  • /data/userconfig 存放用户配置,主要是用户名密码手机号啥的

抓包

用浏览器打开大学印象的页面,按F12,输入借到的账号,登录一波,然后控制台就显示了登录的接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Request URL: https://www.dxever.com/Wxminiprog/Disease/login
Request Method: POST
Status Code: 200 OK
Remote Address: 127.0.0.1:7890
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: x-requested-with,content-type
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: keep-alive
Content-Type: application/json; charset=utf8
Date: Sat, 14 Mar 2020 14:58:52 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: nginx
Status: 200 OK
Transfer-Encoding: chunked
Via: 100167
Accept: application/json
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: keep-alive
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=896f5e9bdfeab7fe4f556f07176fa72e
Host: www.dxever.com
Origin: https://www.dxever.com
Referer: https://www.dxever.com/fei/delete/ncp/login.html
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1
X-Requested-With: XMLHttpRequest
studno: 16********
password: 123456

写接口

写页面

写控制台程序

配置定时任务

完事了


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!