职教云自动签到
-
职教云自动签到PHP脚本
如果有不会搞的,我可以帮忙签到
账号+密码+要签到的时间
senye666@foxmail.com<?php /* *------------------------------------------------------ * Title : 职教云自动签到PHP版 V3.0 *------------------------------------------------------ * Author : 青山 (qingshan@88.com) *------------------------------------------------------ * Time : 2020-08-23 *------------------------------------------------------ * Tips : 本源码不得贩卖 *------------------------------------------------------ */ header('content-type:text/html;charset=UTF-8'); date_default_timezone_set("PRC"); /* **获取GET参数 让用户自定义签到频率 */ $skey=$_GET['skey'];//qq推送 $userName=$_GET['userName'];//账号 $userPwd=$_GET['userPwd'];//密码 /* **跟随更新协议头 */ $emit=time()."000"; //echo date('Y-m-d H:i:s'); $equipmentModel="Xiaomi Redmi K20 Pro"; $equipmentApiVersion="10"; $equipmentAppVersion="2.8.29"; $device=getDevice($equipmentModel,$equipmentApiVersion,$equipmentAppVersion,$emit); //header $headers = array('Content-Type:'.'application/x-www-form-urlencoded','emit:'.$emit,'device:'.$device); //print_r($header); /* **自动签到部分 */ //login $url="https://zjyapp.icve.com.cn/newMobileAPI/MobileLogin/newSignIn"; $data=array("clientId"=>"d902c875d5f34c0f93362139f5af0c4c","sourceType"=>"2","userPwd"=>$userPwd,"userName"=>$userName,"appVersion"=>$equipmentAppVersion,"equipmentAppVersion"=>$equipmentAppVersion,"equipmentApiVersion"=>$equipmentApiVersion,"equipmentModel"=>$equipmentModel); //print_r($data); $output=httppost($url,$headers,$data); //print_r($output);; if($output['code'] == "1"){ $stuId = $output["userId"]; $newtoken=$output['newToken']; $faceDate = date("Y-m-d"); //echo $stuId; //get jrkt $url2="https://zjyapp.icve.com.cn/newmobileapi/faceteach/getStuFaceTeachList"; //$data="stuId={$stuId}&faceDate={$faceDate}&newToken={$newtoken}"; $data=array("stuId"=>$stuId,"faceDate"=>$faceDate,"newToken"=>$newtoken); $output=httppost($url2,$headers,$data); //print_r($output); $todayClassInfo=$output["dataList"]; // $url3="https://zjyapp.icve.com.cn/newmobileapi/faceteach/newGetStuFaceActivityList"; if(!empty($todayClassInfo)){ foreach($todayClassInfo as $i){ $data=array("activityId"=>$i['Id'],"stuId"=>$stuId,"classState"=>$i['state'],"openClassId"=>$i['openClassId'],"newToken"=>$newtoken); $output=httppost($url3,$headers,$data); //print_r($output); $inClassInfo=$output["dataList"]; // $url4="https://zjyapp.icve.com.cn/newmobileapi/faceteach/isJoinActivities"; if(count($inClassInfo) != "0"){ foreach($inClassInfo as $n){ if ($n["DataType"] == "签到" and $n["State"] !== "3"){ $attendData = array("activityId"=>$i['Id'],"openClassId"=>$i['openClassId'],"stuId"=>$stuId,"typeId"=>$n['Id'],"type"=>"1","newToken"=>$newtoken); $output=httppost($url4,$headers,$attendData); //print_r($output); $attendInfo=$output; $url5="https://zjyapp.icve.com.cn/newmobileapi/faceteach/saveStuSign"; if($attendInfo["isAttend"] != "1"){ $signInData = array("signId"=>$n['Id'],"stuId"=>$stuId,"openClassId"=>$i['openClassId'],"sourceType"=>"3","checkInCode"=>$n['Gesture'],"activityId"=>$i['Id'],"newToken"=>$newtoken); $output=httppost($url5,$headers,$signInData); $time=date("Y-m-d H:i:s"); echo '账号:'.$userName.'的'.$i["courseName"]." ".$time." ".$output["msg"]."\r\n"; $url6="https://push.xuthus.cc/send/{$skey}?c=账号:{$userName}的{$i['courseName']}签到成功\n\n"; $output=file_get_contents($url6); }else{ echo"账号:".$userName."的".$n['DateCreated'].$i["courseName"]."的签到已经签到!"."<br>"; }; }else{ if($n["DataType"] == "签到"){ echo "状态:".$output['code']."账号:".$userName."的".$n['DateCreated'].$i["courseName"]."的签到已经签到!"."<br>"; }; }; }; }; }; }else{ echo "状态:".$output['code']."账号:".$userName."今日没有课唉 要好好休息哦"."<br>"; }; }else{ echo $output['msg']; } /* **核心函数 请勿更改 */ function httppost($url,$headers,$data){ $curl=curl_str(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_HTTPHEADER,$headers); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS,http_build_query($data)); $output = curl_exec($curl); curl_close($curl); $output=json_decode($output,true); return $output; //print_r($output); } function curl_get($url,$headers,$data,$cookie){ $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_HTTPHEADER,$headers); curl_setopt($curl,CURLOPT_COOKIE,$cookie); //curl_setopt($curl, CURLOPT_POST, 1); //curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $output = curl_exec($curl); curl_close($curl); $output=json_decode($output,true); return $output; //print_r($output); } function curl_post($url,$headers,$data,$cookie){ $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_HTTPHEADER,$headers); curl_setopt($curl,CURLOPT_COOKIE,$cookie); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $output = curl_exec($curl); curl_close($curl); $output=json_decode($output,true); return $output; //print_r($output); } function post_curl($url, $params=[], $headers=[]){ $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 30); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query($params)); curl_setopt( $ch , CURLOPT_URL , $url ); $response = curl_exec( $ch ); if ($response === FALSE) { return false; } curl_close( $ch ); return $response; } // function object_array($array) { if(is_object($array)) { $array = (array)$array; } if(is_array($array)) { foreach($array as $key=>$value) { $array[$key] = object_array($value); } } return $array; } function getDevice($model,$vsersionAndroid,$versionName,$timeStamp){ $tmp=md5($model); //echo $tmp."<br>"; $tmp1=$tmp.$vsersionAndroid; //echo $tmp."<br>"; $tmp=md5($tmp1); //echo $tmp."<br>"; $tmp1=$tmp.$versionName; //echo $tmp."<br>"; $tmp=md5($tmp1); //echo $tmp."<br>"; $tmp1=$tmp.$timeStamp; //echo $tmp."<br>"; return md5($tmp1); }
脚本仅供学习参考,如有学习以外任何事情,本人概不负责。