好分数中分数本地查看

2019年7月2日16:45:42 评论 1,914

学校用的月考统计分数的网站是好分数,无聊想搞搞在服务器自助获取分数,无需在网页上输入账号密码,实现及访问及查看

首先抓包获取接口

抓取登录接口

尝试利用错误的账号密码,然后在控制台中获取登录api

获取到的登录API是:https://hfs-be.yunxiao.com/v2/users/sessions

POST请求参数大致如下:

参数说明
loginName登录账号
password登录密码
rememberMe是否记住账号密码,是则"1";否则"2"
roleType不知道什么东西,填"1"就对了

抓取获取成绩接口

登录后通过控制台得到总分查询接口

获取到的获取成绩的API是:https://hfs-be.yunxiao.com/v2/exam/trends-overview

(博主成绩偏中等.....这都不重要啦......)

获取到的JSON里data中的部分数据分析如下

名称说明
className班级名称
examId本次考试ID
manfen满分分数
score本次考试分数
stage水平评价
time时间戳
classRank不知道什么东东....
classRankType不知道什么东东....
teacherComment不知道什么东东....
type不知道什么东东....

利用PHP Curl模拟登录以及获取成绩

新建文件"hfs.php"(其他也可),将以下代码粘贴并保存

(这里假设你的域名为example.com,接口文件在根目录)

<?php
header('Content-Type:application/json; charset=utf-8');
$post = array(
    'loginName'  => 'xxx@qq.com',//登录邮箱;用户名
    'password'  => '123456',//密码
    'rememberMe'  => '1',//是否记住我
    'roleType'  => '1',//不知道是啥,填1就对了
);
//登录地址
$url = "https://hfs-be.yunxiao.com/v2/users/sessions";
//设置cookie保存路径
$cookie = 'cookie.txt';
//登录后要获取信息的地址
$url2 ="https://hfs-be.yunxiao.com/v2/exam/trends-overview";
//模拟登录
login_post($url, $cookie, $post);
//获取成绩信息
$content = get_content($url2, $cookie);
echo $content;
//模拟登录
function login_post($url, $cookie, $post) {
 $curl = curl_init();//初始化curl模块
 curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
 curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自动显示返回的信息
 curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
 curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
 curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
 curl_exec($curl);//执行cURL
 curl_close($curl);//关闭cURL资源,并且释放系统资源
}
//登录成功后获取数据
function get_content($url, $cookie) {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
 $rs = curl_exec($ch); //执行cURL抓取页面内容
 curl_close($ch);
 return $rs;
}

成功的话直接访问将得到以下类似的结果

利用ajax列出每次考试总分及其他

新建文件"index.html"(其他也可),将下面代码粘贴并保存

(注意将"https://example.com/hfs.php"改为自己的接口网址)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title></title>
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
                $.ajax({
                    type: "get",        //type:(string)请求方式,POST或GET        
                    dataType: "json",    //dataType:(string)预期返回的数据类型。xml,html,json,text等
                    url: "https://example.com/hfs.php",  //这里改为自己的接口网址
                    success: function (json) {
                        $.each(json.data, function(i, item) {
                            var name = item.name;
                            var className = item.className;
                            var score = item.score;
                            var level = item.level;
                            var stage = item.stage;
                        $("tbody").append("<tr><td>"  + name + "</td><td>" + className + "</td><td>" + score + "分</td><td>" + level + "</td><td>" + stage + "</td></tr>");
                        });
                    }
                });


    </script>
    </head>
    
    <body>
    <table>
        <thead>
            <tr>
                <td>考试</td>
                <td>班级</td>
                <td>分数</td>
                <td>占比</td>
                <td>评价</td>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
    </body>
</html>

访问所新建的html文件,成功后访问类似以下情况:

当然这种未经过任何css"修饰"不好看,美化的话自行搞啦~我就不搞了

我一个菜鸟只能帮到这么多了

后记

另外,提供几个抓到的获取单次考试的接口:

分科成绩:https://hfs-be.yunxiao.com/v2/exam/{考试ID}/overview(考试ID在成绩接口的说明标红部分哦)

单科成绩:https://hfs-be.yunxiao.com/v2/exam/{考试ID}/{纸张ID}/detail(纸张ID在分科成绩接口示例图片中标灰部分)

答题卡图片地址:https://hfs-be.yunxiao.com/v2/exam/{考试ID}/papers/{纸张ID}/answer-picture

有兴趣的同学可以利用过来做二开查询哟!拜了个拜~

自媒体分享计划

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1y2onolfajued

weinxin
滑稽社
流星博客建立的官方交流群,包含技术交流|随意闲聊|好友扩列|热心管理在一体的技术群

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: