声明:
本篇博客目的仅为了读者学习Java,任何用于非法途径与本人无关,欢迎大家学习,本类型博客不作为讲解博客,仅作为记录!!
package Chaoxing;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.dongliu.requests.RawResponse;
import net.dongliu.requests.Requests;
import net.dongliu.requests.Session;
import java.util.*;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = in.nextLine();
System.out.println("请输入密码:");
String password = in.nextLine();
var student = new Student(username,password);
boolean condition = student.Login_Status();
if (condition){
student.Course_get();
while(true){
try{
//获取Map中的所有key
Set<String> keySet = student.data.keySet();
//遍历存放所有key的Set集合
Iterator<String> it =keySet.iterator();
while(it.hasNext()){ //利用了Iterator迭代器**
//得到每一个key
String key = it.next();
//通过key获取对应的value
String value = student.data.get(key);
student.signSearch(key,value);
if (student.cond==1){
System.out.println("yes");
student.cond=0;
}else{
System.out.println("未查询到签到活动");
}
Thread.sleep(10000);
}
}catch (Exception e){
System.out.printf("666");
}
}
}
}
}
class Student{
public static Session session = Requests.session();
private String username;
private String password;
private String uid;
private Map<String,Object> headers = new HashMap<>();
private StringJoiner activates = new StringJoiner(", ");
public Student(String username,String password){
this.username = username;
this.password = password;
}
public Map<String,String> data = new HashMap<>();
public boolean Login_Status() {
String url = "https://passport2-api.chaoxing.com/v11/loginregister";
Map parameters = new HashMap();
parameters.put("uname",username);
parameters.put("code",password);
headers.put("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36");
String result = session.post(url).headers(headers).params(parameters).send().readToText();
if(result.contains("true")){
for (int i = 0; i < session.currentCookies().size(); i++) {
String name = session.currentCookies().get(i).getName();
if (name.contains("UID")){
uid = session.currentCookies().get(i).getValue();
break;
}
}
return true;
}else{
return false;
}
}
public int cond = 0;
public void Course_get(){
String url = "http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1";
String result = session.get(url).headers(headers).send().readToText();
JSONObject obj = JSON.parseObject(result);
System.out.println(result);
System.out.println(obj);
String results = obj.getString("result");
if (results.contains("1")){
System.out.println("获取成功:");
JSONArray arr = obj.getJSONArray("channelList");
for (int i = 0; i < arr.size() ; i++) {
JSONObject temp = arr.getJSONObject(i).getJSONObject("content");
if (! temp.toString().contains("course")){
continue;
}
String course_id = temp
.getJSONObject("course")
.getJSONArray("data")
.getJSONObject(0)
.getString("id");
String name = temp
.getJSONObject("course")
.getJSONArray("data")
.getJSONObject(0)
.getString("name");
String class_id = temp.getString("id");
data.put(name,course_id);
System.out.printf("%d.课程名称:%s\n",i+1,name);
}
}
}
public void signSearch(String course_id,String class_id){
// String url="https://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist?courseId="+course_id+"&classId="+
// class_id+"&uid="+uid;
String url="https://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist?courseId="+"207611834"+"&classId="+
"15284909"+"&uid="+uid;
RawResponse result = session.get(url).headers(headers).send();
int code = result.getStatusCode();
if(code==200){
String res = result.readToText();
JSONArray arr = JSON.parseObject(res).getJSONArray("activeList");
for (int i = 0; i <arr.size() ; i++) {
if (! arr.getJSONObject(0).toString().contains("nameTwo")){
continue;
}
String activeType = arr.getJSONObject(i).getString("activeType");
int status = arr.getJSONObject(i).getIntValue("status");
if (status==1&activeType.equals("2")){
String sign_url = arr.getJSONObject(i).getString("url");
String aid = aid_get(sign_url);
if (! activates.toString().contains(aid)){
System.out.printf("查询到待签到活动 活动名称:%s 活动状态:%s 活动时间:%s aid:%s"
,arr.getJSONObject(i).getString("nameOne")
,arr.getJSONObject(i).getString("nameTne")
,arr.getJSONObject(i).getString("nameFour")
,aid);
sign(aid,uid);
cond=1;
}
}
}
}
}
public String aid_get(String sign_url){
for (int j = 0; j < sign_url.split("&").length; j++) {
String[] var = sign_url.split("&")[j].split("=");
if (var[0].equals("activePrimaryId")) {
return var[1];
}
}
return "ccc";
}
public void sign(String aid,String uid){
Map params = new HashMap();
params.put("name","");
params.put("address","自己改谢谢");
params.put("activeId",aid);
params.put("uid",uid);
String url = "https://mobilelearn.chaoxing.com/pptSign/stuSignajax";
String result = session.post(url).headers(headers).body(params).send().readToText();
if (result.contains("success")){
System.out.println("用户签到成功");
activates.add(aid);
}else{
System.out.println("用户签到失败");
activates.add(aid);
}
}
}