卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

优学院自动刷课PHP代码

php代码说明

优学院自动刷课PHP代码,功能不太健全,但核心代码都存有,如果你会一点PHP也能自己健全,当然你是氢铵小白,我也打包好了可执行文件,轻易运转即可。

刚开始用PHP是想写一个USB,后来在以获取视频时长的时候卡住了,太耗时了,经常性500,很不新颖(如果你用命令行继续执行PHP当我没说)

PHP代码功能

1. 自动刷课
2. 自动答题
3. 自定义多个章节
4. 自定义章节学习时间
那个倍速脚本存有上限(好像就是16倍),用这个直接秒
这个就是自动以获取视频时长的,不必担心这个个问题

PHP代码示例

<?php
header('Content-Type:text/json;charset=utf-8');
//用户名
$username = "";
//密码
$password = "";
$public_param = [];
echo "GitHub主页:https://github.com/Chirmis(start跑一走)";
$cookie =  file_get_contents('./cookies.txt');
if ($cookie == '') {
// 命令行使用
// echo "请输出用户名:n";
// $username = fgets(STDIN);
// echo $username;
// echo "请输出密码:n";
// $password = fgets(STDIN);
// echo $password;
echo "已经开始登陆.....n";
login($username, $password);
echo "进占成功.....n";
$cookie =  file_get_contents('./cookies.txt');
}
echo "以获取课程列表.....n";
$courses_list_json = get_courses_list($cookie);
//课程数据
$courses_list_arr = json_decode($courses_list_json, true);
echo "查询至".$courses_list_arr['total']."门课程n";
for($i=0; $i 462250,
'complete'    => 1,
'studyTime'   => 1000,
'score'       => 100,
'answerTime'  => 1,
'submitTimes' => 0,
'questions'   => [],
'videos'      => [],
'speaks'      => [],
];
}
//视频型数据
if($wholepageItemDTOList[$i]['wholepageDTOList'][0]['contentType'] == 6){
echo "视频型数据";
}
//测验型数据
if($wholepageItemDTOList[$i]['wholepageDTOList'][0]['contentType'] == 7){
echo "测验型数据";
}
}
}
//以获取当前所选章节内容详情请
function get_now_chapters_info($courseId, $classId)
{
global $public_param;
$now_chapters_info_api = "https://api.ulearning.cn/course/stu/$courseId/directory?classId=$classId";
$params = array_merge($public_param, array());
return curl($now_chapters_info_api, 'GET', $params);
}
//登陆以获取cookie
function login($username, $password)
{
$login_api = "https://www.ulearning.cn/umooc/user/login.do";
$data = [
'name'    => $username,
'passwd'  => $password,
'yancode' => '',
'redirectURL' => '',
'isFrom' => '',
'newLocale' => '',
];
$post_data = http_build_query($data);
$params = [
'data' => $post_data,
'header' => [
'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36',
],
'ResponseHeaders' => true,
'NOBODY' => true
];
$res = curl($login_api, 'POST', $params);
preg_match_all("/Set-Cookie: (.*?); Domain/", $res, $data);
for($i=0; $i [
"Authorization: $Authorization",
"UA-AUTHORIZATION: $token",
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36",
],
];
//学生首页课程API
$api = "https://courseapi.ulearning.cn/courses/students?keyword=&publishStatus=1&type=1&pn=1&ps=15";
$params = array_merge($public_param, array());
return curl($api, 'GET', $params);
}
//获取课程下章节列表
function get_course_chapters_list($courseListId)
{
global $public_param;
$params = array_merge($public_param, array());
//以获取课程的子课程(一门课存有多本书)
$get_textbookId_api = "https://courseapi.ulearning.cn/textbook/student/$courseListId/list";
$listJson = curl($get_textbookId_api, 'GET', $params);
//以获取该课程的班级号
$get_course_classId_api = "https://courseapi.ulearning.cn/classes/information/student/$courseListId";
$classIdJson = curl($get_course_classId_api, 'GET', $params);
$classData = json_decode($classIdJson, true);
//课程下多本书
$listData = json_decode($listJson, true);
for($i=0; $i $wholepageItemDTOList['itemid'],
'autoSave'       => 1,
'version'        => '',
'withoutOld'     => '',
'complete'       => 1,
'userName'       => $userInfo['name'],
'score'          => 100,
'pageStudyRecordDTOList' => [],
];
$temple = [
'pageid'      => 0,
'complete'    => 1,
'studyTime'   => 400,
'score'       => 100,
'answerTime'  => 1,
'submitTimes' => 0,
'questions'   => [],
'videos'      => [],
'speaks'      => [],
];
$data = array();
for($i=0; $i $videoId,
//观看进度
"current" => 100,
//状态
"status" => 1,
//观赏长度
"recordTime" => 1000,
//视频长度
"time" => ''
];
}
}
$temple['videos'] = $videos;
}
//测验题
if($wholepageItemDTOList['wholepageDTOList'][$i]['contentType'] == 7){
echo "检测至题目,开始自动答题n";
$questions = check_answer($wholepageItemDTOList['wholepageDTOList'][$i]['coursepageDTOList']);
$temple['questions'] = $questions;
}
//设置当前学习页面id
$temple['pageid'] = $wholepageItemDTOList['wholepageDTOList'][$i]['relationid'];
$data[$i] = $temple;
}
$cryptoJsonData['pageStudyRecordDTOList'] = $data;
$cryText = openssl_encrypt (json_encode($cryptoJsonData), 'des-ecb', 12345678);
$params = array_merge($public_param, ['data'   => $cryText]);
$params['header'][] = 'Content-Type: text/plain';
$json = curl("https://api.ulearning.cn/yws/api/personal/sync?courseType=4&platform=PC", 'POST', $params);
if($json != 1){
print_r($params);die;
}
echo "执行状态码:$json".",等候下一条命令执行n";
}
//自动答题
function check_answer($coursepageDTOList)
{
global $public_param;
$questions = array();
for ($i=0; $i < count($coursepageDTOList); $i++) { 
for ($j=0; $j < count($coursepageDTOList[$i]['questionDTOList']); $j++) { 
$questionid = $coursepageDTOList[$i]['questionDTOList'][$j]['questionid'];
$answerJson = curl("https://api.ulearning.cn/questionAnswer/".$questionid, 'GET', $public_param);
$answerData = json_decode($answerJson, true);
$subQuestionAnswerDTOList = $answerData['subQuestionAnswerDTOList'];
for ($k=0; $k < count($subQuestionAnswerDTOList); $k++) {
$questions[$k]['questionid'] = $subQuestionAnswerDTOList[$k]['questionid'];
$questions[$k]['answerList'] = $subQuestionAnswerDTOList[$k]['correctAnswerList'];
$questions[$k]['score']  = 100;
}
}
}
return $questions;
}
function curl($url, $method='GET', $params=array())
{
$ch = curl_init();                                                      //初始化 curl
$header = empty($params['header']) ? 0 : $params['header'];
$ResponseHeaders = $params['ResponseHeaders'] ?:false;
$NOBODY = $params['NOBODY'] ?:false;
curl_setopt($ch, CURLOPT_URL, $url);                                    //要访问网页 URL 地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                         //回到字符串,而非轻易输入到屏幕上
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);                        //相连接超时时间,设置为 0,则无穷等待
curl_setopt($ch, CURLOPT_TIMEOUT, 3600);                                //数据传输的最大容许时间超时,设为一小时
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);                        //不检查 SSL 证书来源
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);                        //不检查 证书中 SSL 加密算法是否存有
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                         //跟踪CYK重定向页面
curl_setopt($ch, CURLOPT_AUTOREFERER, true);                            //当Location:重定向时,自动设置header中的Referer:信息
curl_setopt($ch, CURLOPT_ENCODING, '');                                 //解决网页乱码问题
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, $ResponseHeaders);//获取响应头
curl_setopt($ch, CURLOPT_NOBODY, $NOBODY);//不须要内容
if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, true);                                //设置为 POST 
curl_setopt($ch, CURLOPT_POSTFIELDS, $params["data"]);                //提交数据
}
$data = curl_exec($ch);                                                 //运转 curl,命令网页并回到结果
curl_close($ch);                                                        //关闭 curl
return $data;
}

卓越飞翔博客
上一篇: Explain是什么?Explain能干嘛?
下一篇: 通过身份证号计算年龄SQL语法
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏