本文章仅用于个人知识积累供大家学习交流分享,请勿将成果用于非法用途,建议您设计测试完成后进行正规的打卡操作。因使用本技术研究带来的一切后果,由使用者自行负责。出现任何问题均与作者无关。

因校企通是手机端的APP,它在提交到远端服务器时肯定会打包我们所填的信息发请求到服务器。

首先我们要做的是抓包,抓包工具及教程百度都有,点我跳转到Fiddler抓包教程,抓到包后 我们要进行读包,我之前导出的包的数据,

python企业微信 获取打卡信息接口 企业微信打卡抓包_java代码

python企业微信 获取打卡信息接口 企业微信打卡抓包_数据_02


在包数据中 中文字符的UFT-8编码在打包过程中被转换为了URL编码,我们可以在百度找到工具去解码

python企业微信 获取打卡信息接口 企业微信打卡抓包_服务器_03

解码后

python企业微信 获取打卡信息接口 企业微信打卡抓包_python企业微信 获取打卡信息接口_04

http://yx.ty-ke.com/Home/Monitor/monitor_add 代表发送请求的url

mobile代表身份证号码(校企通登陆的时候 也是靠我们的身份证号登陆的)

title代表体温

province代表所在省份

city代表所在城市

district代表所在区县

address代表所在的详细地址(这里一定要具体到省市县/区村)

(我解析过他这个系统的sql语句。。。插入打卡位置的时候只插入address的数据,相当于province,city,district没起作用,设计的不是很合理,我猜他的原因是因为调用了百度地图的定位接口,定位出来的信息直接就是加着省市县区的,所以之前设计的province那些字段没起作用)

我们自动打卡的原理就是,定时让服务器帮我们自动向校企通的服务器定时发送数据,而这些数据我们除体温变动之外,其他的(所在位置)一般都是写死的。

开始利用我们所学的Spring boot 写一个能向校企通服务器发post请求的java代码

python企业微信 获取打卡信息接口 企业微信打卡抓包_数据_05


直接贴代码

/***  sendUrl    (远程请求的URL)*  param    (远程请求参数)*/
    public static String sendPostUrl(String url, String param){
        PrintWriter out = null;
        BufferedReader in = null;
        JSONObject jsonObject = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流(设置请求编码为UTF-8)
            out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 获取请求返回数据(设置返回数据编码为UTF-8)
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            //System.out.println(result);
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }

此时,我们已经把核心的内容写完了。

接下来就想,如何让服务器周期性的调用这个java代码?如果要帮舍友打卡的话,如何进行采集不同的数据写入到代码中,再让服务器周期性调用这个java代码?

1.首先采集数据,我想的是 建立一个用户数据库,存储舍友的打卡信息

python企业微信 获取打卡信息接口 企业微信打卡抓包_java代码_06


2. 如何让服务器周期性的调用呢?有两种解法 第一个就是引用定时器的包,用定时器的包的相关类来实现 第二个就是 用我们的后端思想,写一个简单的controller,借助第三方工具 定时访问我们的url

这里介绍第二种解法,大家也都学了Spring Boot 通俗易懂

实体类

python企业微信 获取打卡信息接口 企业微信打卡抓包_数据_07


服务层

python企业微信 获取打卡信息接口 企业微信打卡抓包_数据_08


一个是插入用户(用于舍友提交表单)

一个是查找数据库中的已提交用户控制层

用户舍友提交信息

python企业微信 获取打卡信息接口 企业微信打卡抓包_python企业微信 获取打卡信息接口_09


用户服务器周期性的访问url,触发java自动提交请求

python企业微信 获取打卡信息接口 企业微信打卡抓包_服务器_10

前端写一个表单就行,用于让舍友写信息,提交到服务器数据库上。

python企业微信 获取打卡信息接口 企业微信打卡抓包_java代码_11

此时,代码部分已经完工了,可以跑起来手动访问/chufa,来测试一下能不能发请求。

借助第三方工具让服务器定时访问/chufa

我们使用windows自带的定时任务工具

python企业微信 获取打卡信息接口 企业微信打卡抓包_服务器_12


python企业微信 获取打卡信息接口 企业微信打卡抓包_服务器_13


python企业微信 获取打卡信息接口 企业微信打卡抓包_java代码_14

这个程序或脚本写:“C:\Program Files (x86)\Internet Explorer\iexplore.exe”

参数写http://127.0.0.1:8080/chufa

点击下一步即可创建任务完成。

这是一个打卡任务,得一共创建3个才可以。服务器去阿里云,学生认证后可以白嫖两个月的。记得配置端口开放,要不然舍友访问不到前端。

基本上就这样。再次声明
本文章仅用于个人知识积累供大家学习交流分享,请勿将成果用于非法用途,建议您设计测试完成后进行正规的打卡操作。因使用本技术研究带来的一切后果,由使用者自行负责。出现任何问题均与作者无关。