import requests,json,time,datetime import smtplib from email.mime.text import MIMEText from email.header import Header mail_host="smtp.qq.com"#設置的郵件服務器host必須是發送郵箱的服務器,與接收郵箱無關。 mail_user=""#qq郵箱登錄名 mail_pass="" #開啓stmp服務的時候並設置的受權碼,注意!不是QQ密碼。 sender=''#發送方qq郵箱 receivers=['']#接收方qq郵箱 username='17628678646'#帳號 passwd='xiaoxinxingshi5'#密碼 #server醬推送 SCKEY='' #設置輪詢間隔(單位:秒,建議不低於5) speed=10 headers = {'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'} coursedata=[] activeList=[] course_index=0 status=0 activates=[] a=1 index=0 def login(username,passwd): #獲取cookie url='https://passport2-api.chaoxing.com/v11/loginregister' data={'uname':username,'code':passwd,} session = requests.session() cookie_jar = session.post(url=url, data=data, headers=headers).cookies cookie_t = requests.utils.dict_from_cookiejar(cookie_jar) return cookie_t cookie=login(username,passwd) uid=cookie['UID'] def taskactivelist(courseId,classId): global a url="https://mobilelearn.chaoxing.com/ppt/activeAPI/taskactivelist?courseId="+str(courseId)+"&classId="+str(classId)+"&uid="+uid res=requests.get(url,headers=headers,cookies=cookie) respon = res.status_code if respon==200:#網頁狀態碼正常 data=json.loads(res.text) activeList=data['activeList'] #print(activeList) for item in activeList: if("nameTwo" not in item): continue if(item['activeType']==2 and item['status']==1): signurl=item['url']#提取activePrimaryId aid = getvar(signurl) if(aid not in activates): print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),'[簽到]',coursedata[i]['name'],'查詢到待簽到活動 活動名稱:%s 活動狀態:%s 活動時間:%s aid:%s'%(item['nameOne'],item['nameTwo'],item['nameFour'],aid)) sign(aid,uid)#print('調用簽到函數') a=2 else: print('error',respon)#不知道爲啥... def getvar(url): var1 = url.split("&") for var in var1: var2 = var.split("=") if(var2[0]=="activePrimaryId"): return var2[1] return "ccc" def sign(aid,uid): global status,activates url="https://mobilelearn.chaoxing.com/pptSign/stuSignajax?activeId="+aid+"&uid="+uid+"&clientip=&latitude=-1&longitude=-1&appType=15&fid=0" res=requests.get(url,headers=headers,cookies=cookie) push(SCKEY,res.text) if(res.text=="success"): try: message=MIMEText("用戶:"+uid+" 簽到成功!",'plain','utf-8') message['From']=Header("自動簽到程式",'utf-8') #設置顯示在郵件裏的發件人 message['To']=Header("自動程序收件人",'utf-8') #設置顯示在郵件裏的收件人 subject ='自動簽到程序腳本' message['Subject']=Header(subject,'utf-8') #設置主題和格式 smtpobj=smtplib.SMTP_SSL(mail_host,465) #本地若是有本地服務器,則用localhost ,默認端口25,騰訊的(端口465或587) smtpobj.set_debuglevel(1) smtpobj.login(mail_user,mail_pass)#登錄QQ郵箱服務器 smtpobj.sendmail(sender,receivers,message.as_string())#發送郵件 print("用戶:"+uid+" 簽到成功!") smtpobj.quit()#退出 except smtplib.SMTPException as e : print("Error:沒法發送郵件") print(e) print("用戶:"+uid+" 簽到成功!") activates.append(aid) status=2 else: print(res.text,'簽到失敗') activates.append(aid) def push(SCKEY,msg): if SCKEY.isspace() or len(SCKEY)==0: return else: api = 'https://sc.ftqq.com/'+SCKEY+'.send' title = u"簽到辣!" content = '課程: '+coursedata[i]['name']+'\n\n簽到狀態:'+msg data = { "text":title, "desp":content } req = requests.post(api,data = data) url="http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1" res=requests.get(url,headers=headers,cookies=cookie) cdata=json.loads(res.text) if(cdata['result']!=1): print("課程列表獲取失敗") for item in cdata['channelList']: if("course" not in item['content']): continue pushdata={} pushdata['courseid']=item['content']['course']['data'][0]['id'] pushdata['name']=item['content']['course']['data'][0]['name'] #pushdata['imageurl']=item['content']['course']['data'][0]['imageurl'] pushdata['classid']=item['content']['id'] coursedata.append(pushdata) print("獲取成功:") for item in coursedata:#打印課程 print(str(index)+".課程名稱:"+item['name']) index+=1 while 1: for i in range(index): time.sleep(speed)#休眠 taskactivelist(coursedata[i]['courseid'],coursedata[i]['classid']) if a==2: a=0 else: print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),'[監控運行中]課程:',coursedata[i]['name'],'未查詢到簽到活動')
基於GitHub某倉庫代碼改的,如今因爲找不到原地址在哪兒了。因此若發現侵權,請聯繫我刪除!python